26 樹的子結構

2021-10-03 21:00:17 字數 1192 閱讀 1371

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