給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
方法一:
左子樹前序遍歷,右子樹後續遍歷,若相反則是對稱
class
solution
:def
issymmetric
(self, root: treenode)
->
bool
: bli =
# 用來存左子樹的前序遍歷
fli =
# 用來存右子樹的後序遍歷
if root ==
none
:# 無根節點
return
true
if root and root.left ==
none
and root.right ==
none
:# 只有根節點
return
true
if root and root.left and root.right:
self.pre_order(root.left, bli)
self.post_order(root.right, fli)
fli.reverse(
)# 將後序遍歷的列表倒序
if bli == fli:
return
true
else
:return
false
defpre_order
(self,root,li)
:# 二叉樹的前序遍歷
if root:
self.pre_order(root.left,li)
self.pre_order(root.right,li)
elif root ==
none
:none
)def
post_order
(self,root,li)
:# 二叉樹的後序遍歷
if root:
self.post_order(root.left,li)
self.post_order(root.right,li)
elif root ==
none
:none
)
方法二:bfs
import collections
class
solution
:def
issymmetric
(self, root: treenode)
->
bool
: queue = collections.deque(
)(root, root)
)while queue:
left, right = queue.popleft()if
not left and
not right:
continue
ifnot left or
not right:
return
false
if left.val != right.val:
return
false
(left.left, right.right)
)(left.right, right.left)
)return
true
101 對稱二叉樹 python
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 34 43但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 33 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分 這道題雖然是判斷樹是否對稱,即它是否滿足...
101 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。思路 遞迴就用dfs,迭代是b...
101 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。解題思路 對稱二叉樹可以理解...