劍指 Offer 26 樹的子結構

2022-05-13 07:17:06 字數 1895 閱讀 5639

輸入兩棵二叉樹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,1]

輸出:false

示例 2:

輸入:a = [3,4,5,1,2], b = [4,1]

輸出:true

限制:0 <= 節點個數 <= 10000

一開始沒注意子結構和子樹的區別

子結構和子樹不一樣,子結構只要滿足t樹遍歷完 結構和值與s中的某部分相同就算 [1]是 [1,2,3] 的子結構,但[1]不是[1,2,3]的子樹

#

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, s: treenode, t: treenode) ->bool:

ifnot s or

not t:return

false

defisidentical(s,t):

ifnot t:return

true

ifnot s:return

false

return s.val==t.val and isidentical(s.left,t.left) and

isidentical(s.right,t.right)

return isidentical(s,t) or self.issubstructure(s.left,t) or self.issubstructure(s.right,t)

劍指offer26 樹的子結構

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

劍指 Offer 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,...

劍指 Offer 26 樹的子結構

輸入兩棵二叉樹a和b,判斷b是不是a的子結構。約定空樹不是任意乙個樹的子結構 b是a的子結構,即 a中有出現和b相同的結構和節點值。例如 給定的樹 a 3 4 5 1 2 給定的樹 b 4 1返回 true,因為 b 與 a 的乙個子樹擁有相同的結構和節點值。definition for a bin...