輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
classsolution:
defissubtree(self,proot1,proot2):
#如果樹a空了,樹b沒空則匹配失敗
if proot1==none and proot2 is
notnone:
return
false
#如果樹b空了,匹配完成
if proot2==none:
return
true
#如果不相等,匹配失敗
ifnot proot1.val==proot2.val:
return
false
#繼續匹配
return self.issubtree(proot1.left,proot2.left) and
self.issubtree(proot1.right,proot2.right)
defhassubtree(self, proot1, proot2):
#write code here
result=false
if proot1 is
not none and proot2 is
notnone:
#如果發現根節點,則從此根節點開始判斷是否匹配
if proot1.val==proot2.val:
result=self.issubtree(proot1,proot2)
#如果沒有找到,則用左孩子進行匹配
ifnot
result:
result=self.hassubtree(proot1.left, proot2)
#如果沒有找到,則用右孩子進行匹配
ifnot
result:
result=self.hassubtree(proot1.right, proot2)
return result
劍指offer 17 樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 這是典型二叉樹遞迴問題。倆顆樹都不為空時,如果根節點相同,那麼判斷root2是不是root1的子樹,如果不是,那麼判斷root2是不是root1左子樹的子樹,如果還不是,那麼判斷root2是不是root1右子樹的...
劍指Offer (17)樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 實現如下 分兩步 第一步 尋找與b樹根節點val相等的a樹節點。如果找到進入第二步,否則繼續尋找,直到找完a樹 第二步 以找的節點作為a樹子樹的根節點,同時遍歷兩棵樹,判斷是否所有節點都相同 特殊情況 ...
劍指offer(17)樹的子結構
19.1.11 題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 思修很簡單 遍歷a樹,每個a節點與b對比,對比函式為solution。如下 function treenode x function hassubtree proot1,proot2 r...