輸入兩棵二叉樹a和b,判斷b是不是a的子結構。(約定空樹不是任意乙個樹的子結構)
b是a的子結構, 即 a中有出現和b相同的結構和節點值。
例如:給定的樹 a:
3給定的樹 b:/ \4 5
/ \1 2
4 /1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。
示例 1:
示例 2:輸入:a = [1,2,3], b = [3,1]輸出:false
限制:輸入:a = [3,4,5,1,2], b = [4,1]輸出:true
0 <= 節點個數 <= 10000思路:遞迴+中序遍歷
首先定義乙個函式用來判定以a、b是否相等(遞迴過程)。
子樹判定:先判定a與b是否相等,如果相等則返回,不相等則判斷a的左右子樹是否和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 issubstructure(self, a: treenode, b: treenode) -> bool:
if a==none or b==none:
return false
if self.issametree(a, b):
return true
return self.issubstructure(a.left, b) or self.issubstructure(a.right, b)
def issametree(self, a, b):
if b==none:
return true
elif a==none:
return false
if a.val==b.val:
return self.issametree(a.left, b.left) and self.issametree(a.right, b.right)
else:
return false
Leetcode 樹的子結構
leetcode 輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。思路 先判斷b 為空,則返回 false 在a中遍歷,看b的根節點是否出現 如果出現,比較這個節點的子樹是否與b 相同 definition for ...
leetcode 樹的子結構
輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。由於當前子結構的根節點可能位於樹中任意節點...
LeetCode小結 樹的最優子結構(遞迴)
做了很多樹的題目,發現非常多遞迴求最優子結構的 最大經過節點數 最長路徑等 大意 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。class solution 變型題 543.二叉樹的直徑 大意 給定一棵二叉樹,你需要計算它...