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 的乙個子樹擁有相同的...