題目描述
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。(ps:我們約定空樹不是任意乙個樹的子結構)
# -*- coding:utf-8 -*-
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
#下面兩個函式,hassubtree是判斷兩棵樹是否有空樹,如果有空樹,則沒有必要比了
#第二個函式is_subtree,是判斷a,b是否是子樹了,根節點相同
class
solution:
defhassubtree
(self, proot1, proot2):
# write code here
ifnot proot1 or
not proot2:
#當tree1和tree2都不為零的時候,才進行比較。否則直接返回false
return
false
return self.is_subtree(proot1, proot2) or self.hassubtree(proot1.left, proot2) or self.hassubtree(proot1.right, proot2)
#第一項是判斷此時是否可以作為起點判斷,第二項和第三項是判斷左右子樹是不是可以進行判斷
defis_subtree
(self, a, b):
ifnot b:
#如何b為空,則b已經對比完了,而前面都是相等的,因此全部判斷完返回true
return
true
ifnot a or a.val != b.val:
#如果a為空,則找遍了a也沒有找到相等的起點,如果a與b的值不同
return
false
return self.is_subtree(a.left,b.left) and self.is_subtree(a.right, b.right)
#第一項和第二項是判斷左子樹和右子樹是不是相等,就這樣從ab的起點,一步一步判斷
牛客網刷題 樹的子結構
題目描述 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解析 可以想見整個過程 1 a,b首先看根節點對不對,如果對了,看根節點的左右結點對不對。2 若第乙個根節點沒有配對成功,則換成a的左子結點來配對。3 若左子結點沒有成功,則換成a的右子結點來配對。st...
牛客 樹的子結構
題目要求 輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 解決此題需要分為兩步 1.在a樹中找到與b樹的根節點的值相等的結點r。2.再判斷b樹是否與a樹中以r為根的子樹具有相同的結構。第一步 1.遞迴遍歷樹a,在樹a中找與b樹的根節點的值相等的結點r。2.若找...
劍指offer(牛客網)樹的子結構
輸入兩棵二叉樹a,b,判斷b是不是a的子結構。ps 我們約定空樹不是任意乙個樹的子結構 public class solution 判斷根開頭的 if ispart root1,root2 return hassubtree root1.left,root2 hassubtree root1.rig...