題目:給定乙個二叉樹,檢查其是否為映象對稱!
思路:1.要設定乙個映象樹,設原樹為tree,映象樹為new_tree。
2.tree.left.val == new_tree.right.val and tree.right.val == new_tree.left.val,簡單來講就是左子樹的左孩子 = 右子樹的右孩子,左子樹的右孩子 = 右子樹的左孩子!
code:
class
solution
:def
issymmetric
(self, root: treenode)
->
bool
:if root ==
none
:return
true
defnew_trees
(root_left, root_right)
:#以下三個if為遞迴終止的三個條件
if root_left ==
none
and root_right:
return
true
if root_left ==
none
or root_right ==
none
:return
false
if root_left.val != root_right.val:
return
false
return new_tree(root_left.left, root_right.right)
and new_tree(root_left.right, root_right.left)
return new_tree(root.left, root.right)
#使用遞迴函式,分別比較左右節點!
時間複雜度:o(n),因為我們遍歷整個輸入樹一次,所以總的執行時間為 o(n),其中 n 是樹中結點的總數。
空間複雜度:o(n),遞迴呼叫的次數受樹的高度限制。在最糟糕情況下,樹是線性的,其高度為 o(n),因此,在最糟糕的情況下,由棧上的遞迴呼叫造成的空間複雜度為 o(n)。
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 對稱二叉樹(Python)
給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 方法一 左子樹前序遍歷,右子樹後續遍歷,若相反則是對稱 class solution def issymmetric self,root...
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...