leetcode 二叉樹 對稱二叉樹

2021-09-27 02:21:25 字數 825 閱讀 6505

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

例如,二叉樹 [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

方法一:遞迴

思路:如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的

兩個樹互為映象的條件:

時間複雜度:o(n),遍歷整個樹

空間複雜度:遞迴呼叫次數受樹的高度限制-->棧上遞迴呼叫造成的空間複雜度

public boolean issymmetric0(treenode root) 

public boolean ismirror(treenode t1,treenode t2)

從結果可以看出該方法效率很好

方法二:迭代

思路:利用佇列進行迭代,廣度優先遍歷。

佇列中每兩個連續結點應該相等,且子樹互為映象

時間複雜度:o(n),需要遍歷整個樹

空間複雜度:o(n),向佇列插入理應映象的兩個節點迭代判定

public boolean issymmetric(treenode root) 

return true;

}

github鏈

LeetCode 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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 3class solution public boolean issymmetricdoubl...

LeetCode 對稱二叉樹

我的解決方案 比較笨拙,我直接按照左後根遍歷一遍,然後再按照右後根遍歷一遍,最後比較結果 class treenode public class solution string ltreetostring tree.left,string string ltreetostring tree.righ...

LeetCode 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。思路 要比較二叉樹是否鏡面對稱...