LeetCode 101 對稱的二叉樹

2021-10-23 01:57:29 字數 1158 閱讀 1865

請實現乙個函式,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的映象一樣,那麼它是對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

1

/ \ 2

2/ \ / \34

43

但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:

1

/ \ 2

2 \ \

33

示例 1:

輸入:root = [1,2,2,3,4,4,3]

輸出:true

示例 2:

輸入:root = [1,2,2,null,3,null,3]

輸出:false

思路:

找到遞迴點:左樹與右樹對稱與否,與其跟兩樹的子樹的對稱情況有關係。

遞迴結束條件:

都為空指標則返回 true

只有乙個為空則返回 false

兩個指標當前節點值不相等 返回false

遞迴過程:

判斷 a 的右子樹與 b 的左子樹是否對稱

判斷 a 的左子樹與 b 的右子樹是否對稱

/** * definition for a binary tree node.

* public class treenode

*/class

solution

public

boolean

help

(treenode p,treenode q)

}

2.迭代:

除了遞迴的方法外,我們也可以利用佇列進行迭代。佇列中每兩個連續的結點應該是相等的,而且它們的子樹互為映象。最初,佇列中包含的是 root 以及 root。該演算法的工作原理類似於 bfs,但存在一些關鍵差異。每次提取兩個結點並比較它們的值。然後,將兩個結點的左右子結點按相反的順序插入佇列中。當隊列為空時,或者我們檢測到樹不對稱(即從佇列中取出兩個不相等的連續結點)時,該演算法結束。

public

boolean

issymmetric

(treenode root)

return

true

;}

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 說明 如果你可以遞迴地和迭代地解決它就獎勵你點數。建立乙個映象的樹,然...

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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。這道題也是劍指offer上的2...

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思路 如果同時滿足下面的條件,兩個樹互為映象 它們的兩個根結點具有相同的值。每個樹的右子樹都...