輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
(1)先遞迴判斷a的結點值和b根節點值是否相等,相等再繼續判斷是否可能為子樹。
(2)判斷是否為子樹時,遞迴判斷左右子樹是否相等。
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class solution:
def hassubtree(self, proot1, proot2):
# write code here
if proot1==none or proot2==none:
return false
if proot1.val==proot2.val and self.equal(proot1, proot2):
return true
if proot1.left and self.hassubtree(proot1.left,proot2):
return true
if proot1.right and self.hassubtree(proot1.right,proot2):
return true
return false
def equal(self, proot1, proot2):
if proot1 == none:
return false
if proot1.val==proot2.val:
left = self.equal(proot1.left, proot2.left) if proot2.left else true
right = self.equal(proot1.right, proot2.right) if proot2.right else true
if left and right:
return true
return false
劍指offer 18 樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思路 用遞迴,遍歷a樹的每乙個節點,然後對於每乙個節點,再判斷是否和a相匹配。coding utf 8 class treenode def init self,x self.val x self.le...
劍指offer 18 樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 首先,遍歷a的節點,找到與b的根節點值相同的節點。然後取判斷以這兩個節點開頭的樹,是否相等。判斷兩個子樹相等的條件也是乙個遞迴。知道t1為空的時候,就算是判斷完了,此時返回true bool hassubtree...
劍指offer 18 醜數
題目 把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。直觀的想法 從1開始乙個個判斷數字是否為醜數,遇見醜數就記錄下來,直到找到低n個為止,不過這樣計算複雜度太大。class...