輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
思路:遍歷樹a中的節點,看與樹b根節點的值是否相等,相等的話,遞迴比較左右子樹。不相等的話,接著遍歷樹a。樹的遍歷也是使用遞迴的方式進行實現。需要注意的是,由於空樹不是任意乙個樹的子結構,所以只有當兩樹都不為空時才進行判斷b是否為a的子樹。在比較相等節點的左右子樹是否相等時,如果b已經為空了,那麼說明已經找到了。如果b不為空但是a已經空了,那麼說明沒找到。
python題解:
# -*- coding:utf-8 -*-
# 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
result=false
if proot1 and proot2:
if proot1.val==proot2.val:
result=self.judgesubtree(proot1,proot2)
if not result:
result=self.hassubtree(proot1.left,proot2)
if not result:
result=self.hassubtree(proot1.right,proot2)
return result
def judgesubtree(self,proot1,proot2):
if not proot1 and proot2:
return false
if not proot2:
return true
if proot1.val!=proot2.val:
return false
return self.judgesubtree(proot1.left,proot2.left) and self.judgesubtree(proot1.right,proot2.right)
26 樹的子結構
輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1 返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。示例 1 輸入 a 1,2,3 b 3...
26 樹的子結構
擴充套件題 leetcode572 另乙個樹的子樹 572.另乙個樹的子樹 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即a中有出現和b相同的結構和節點值。例如 給定的樹a 3 4 5 12給定的樹b 4 1返回true,因為b與a的乙個子樹擁有相同...
面試題26 樹的子結構
題目 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。includeusing namespace std struct binarytreenode bool doestree1hastree2 binarytreenode proot1,binarytreenode proot2 bool equ...