給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [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
高階:你可以運用遞迴和迭代兩種方法解決這個問題嗎?
依舊是乙個樹的簡單題,這個題裡面,看到是否是映象對稱,我們可以想到判斷兩個樹是否相同的時候用的遞迴方法,而這道題比上一道題稍有不同,然而還是可以依靠相同的思路實現,我們看**來進一步說明。
比如:在根節點傳進來的時候,我們要判斷是否為空,然後判斷根的左子樹,右子樹是否為空,值是否相等,只有滿足了上述條件之後,我們才能夠進入遞迴的部分。
遞迴函式的具體實現就是,當前層次上的兩個對應的結點看偏左的結點的左結點是否等於偏右結點的右結點,以及偏左結點的右結點是否等於偏右結點的左結點,直到最後一層。
當然,如果結點乙個空乙個不空,我們同樣也要返回false,因為一定是映象不對稱的了,由上述可有如下**:
class
solution
else
if( t1 ==
null
|| t2 ==
null
)else
if( t1-
>val != t2-
>val )
else
} bool issymmetric
(treenode* root)
else
if( root-
>left ==
null
|| root-
>right ==
null
)else
if( root-
>left-
>val != root-
>right-
>val )
else}}
;
方案2:
官方題解的思路差不多,不過這一步很巧妙,可以利用函式的特點,傳入兩個根,這樣雖然多比較了一次,但是**的清晰度明顯增加了不少,小技巧學習了~
class
solution
else
if( t1 ==
null
|| t2 ==
null
)else
if( t1-
>val != t2-
>val )
else
} bool issymmetric
(treenode* root)
};
這次依舊是對樹的遞迴遍歷的一次實踐,沒啥好說的,加深了一點點樹和遞迴的理解。 LeetCode初級演算法之樹 101 對稱二叉樹
題目資訊 給定乙個二叉樹,檢查它是否是映象對稱的。示例1 是對稱的 1 2 2 3 4 4 3 示例2 不對稱 1 2 2 3 3 解法一 遞迴 我們先來劃分子問題,乙個樹對稱也就最終根節點的左子樹與右子樹是對稱的映象的,那麼要求左子節點與右子節點相等的同時左節點的左子樹 右子樹 與右節點的右子樹 ...
leetcode 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,注意遞迴順序 definition for a bina...
LeetCode 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 說明 如果你可以遞迴地和迭代地解決它就獎勵你點數。建立乙個映象的樹,然...