七 另乙個樹的子樹

2021-10-01 21:18:18 字數 1545 閱讀 5945

1、題目鏈結

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。

給定的樹 s:

3

/ \ 4

5/ \

12

給定的樹 t:

4

/ \ 1

2

返回 true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。

2、分析

題目要求是找到乙個樹中是否存在乙個子串,首先想到要用遞迴,然後以相同的順序遍歷這兩個樹, 然後判斷子樹t是否在s中,但是要注意在遍歷的過程中,最後是轉化為字串比較的,所以要注意在none處新增乙個空的標識,並且在每次新增的過程中加乙個 , 這樣可以避免出現 23 == 2 3 的情況。

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

issubtree

(self, s: treenode, t: treenode)

->

bool

: ss =

st =

defpre_order

(node: treenode, res:

list):

if node:

','+

str(node.val)

) pre_order(node.left, res)

pre_order(node.right, res)

else

:',#'

) pre_order(s, ss)

pre_order(t, st)

return

''.join(st)

in''

.join(ss)

4、結果

執行用時 :

92 ms, 在所有 python3 提交中擊敗了81.98

% 的使用者

記憶體消耗 :

13.7 mb, 在所有 python3 提交中擊敗了98.78

%的使用者

5、優化

**比較簡單,感覺沒有可優化點。

望您:

「情深不壽,強極則辱,謙謙君子,溫潤如玉」。

另乙個樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹擁有相同的...

另乙個樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。遞迴class solution object def issubtree self,s,t def ifsame s,t ...

另乙個樹的子樹

給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹擁有相同的...