101 對稱二叉樹(Python)

2021-10-06 16:48:57 字數 1939 閱讀 5301

給定乙個二叉樹,檢查它是否是映象對稱的。

例如,二叉樹 [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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。解題思路 對稱二叉樹可以理解...