題目描述
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
思路:
用遞迴,遍歷a樹的每乙個節點,然後對於每乙個節點,再判斷是否和a相匹配。
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution:
defhassubtree
(self, proot1, proot2):
# write code here
if proot2 == none
or proot1 == none:
return
false
res = false
res = self.func(proot1, proot2)
if res == true:
return
true
if proot1.left != none:
res = self.hassubtree(proot1.left, proot2)
if res == true:
return
true
if proot1.right != none:
res = self.hassubtree(proot1.right, proot2)
return res
deffunc
(self, proot1, proot2):
left = false
right = false
if proot1.val == proot2.val:
if proot1.left != none
and proot2.left != none:
left = self.func(proot1.left, proot2.left)
elif proot2.left == none:
left = true
if proot1.right != none
and proot2.right != none:
right = self.func(proot1.right, proot2.right)
elif proot2.right == none:
right = true
if left == true
and right == true:
return
true
return
false
劍指offer18樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 1 先遞迴判斷a的結點值和b根節點值是否相等,相等再繼續判斷是否可能為子樹。2 判斷是否為子樹時,遞迴判斷左右子樹是否相等。class treenode def init self,x self.val x se...
劍指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...