Leetcode 樹的子結構

2021-10-03 04:47:30 字數 1470 閱讀 8559

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.二叉樹的直徑 大意 給定一棵二叉樹,你需要計算它...