陣列對稱 101 對稱二叉樹

2021-10-14 18:58:26 字數 1445 閱讀 3552

題目資訊

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

示例1:是對稱的

1

/ \2   2

/ \ / \

3  4 4  3

示例2:不對稱

1

/ \2   2

\   \

3    3

解法一:遞迴

我們先來劃分子問題,乙個樹對稱也就最終根節點的左子樹與右子樹是對稱的映象的,那麼要求左子節點與右子節點相等的同時左節點的左子樹(右子樹)與右節點的右子樹(左子樹)對稱,還是畫個圖吧

我們傳入這兩顆樹看是否對稱,那麼有三個操作:

每次遞迴傳遞一對樹,直到最後葉子只有節點節點比較

public boolean issymmetric(treenode root) 

public boolean check(treenode p, treenode q) 

遍歷了整顆樹時間複雜度為o(n),遞迴系統棧占用大小取決於樹的層度這裡不是完全二叉樹所以它只是小於n空間複雜度為o(n)

遞迴思路寫完了,棧換成佇列使用廣度的方式完成同樣的思路,還是再畫個圖

通過佇列依次按照順序比較offer進佇列時就是乙個樹的左(右)與另乙個樹的右(左),poll出佇列的兩個也就是對應的,直到對佇列沒有後續進來的為空了仍然沒出現不滿足情況的,則是對稱二叉樹

public boolean issymmetric(treenode root) 

public boolean check(treenode p, treenode q) return true;

}

時間複雜度與空間複雜度同上

無外乎深度優先與廣度優先,上面的兩種解都是優的解在一次樹的遍歷過程中完成對是否是對稱的判斷。如果直接暴力的還可先遍歷一遍得到序列或者陣列再判斷,比如先序遍歷與後序遍歷序列相反,比如中序遍歷結果是回文的,總之我們要先對遍歷熟悉。

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

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 說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。使用輔助空間佇列 defi...