劍指offer18樹的子結構

2021-08-20 14:02:38 字數 1080 閱讀 2615

輸入兩棵二叉樹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...