leetcode
輸入兩棵二叉樹a和b,判斷b是不是a的子結構。(約定空樹不是任意乙個樹的子結構)
b是a的子結構, 即 a中有出現和b相同的結構和節點值。
思路:先判斷b 為空, 則返回 false
在a中遍歷,看b的根節點是否出現
如果出現,比較這個節點的子樹是否與b 相同
# definition for a binary tree node.
# class treenode:
# def __init__(self, x):
# self.val = x
# self.left = none
# self.right = none
class
solution
:def
compare
(self,a,b):if
not a and b :
return
false
elif
not b :
return
true
elif a.val != b.val :
return
false
elif
not b.left and
not b.right and b.val==a.val:
return
true
else
:return self.compare(a.left,b.left)
and self.compare(a.right,b.right)
defissubstructure
(self, a: treenode, b: treenode)
->
bool:if
not b or
not a:
return
false
tmp = b.val
stack =
[a]if a.val == tmp:
target = a
else
: target =
none
while stack :
r = stack.pop(
)if r.val == tmp:
target = r
break
if r.left:
if r.left.val == tmp:
target = r.left
break
if r.right:
if r.right.val == tmp:
target = r.right
break
ifnot target:
return
false
return self.compare(target,b)
leetcode 樹的子結構
輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。由於當前子結構的根節點可能位於樹中任意節點...
《LeetCode筆記51》 樹的子結構
輸入兩棵二叉樹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...
LeetCode小結 樹的最優子結構(遞迴)
做了很多樹的題目,發現非常多遞迴求最優子結構的 最大經過節點數 最長路徑等 大意 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。class solution 變型題 543.二叉樹的直徑 大意 給定一棵二叉樹,你需要計算它...