動手刷LeetCode 對稱二叉樹

2021-10-04 04:55:45 字數 854 閱讀 3919

判斷是否為對稱二叉樹;

樹的增刪改查基本操作;

解法一:遞迴

如果乙個樹的左子樹與右子樹映象對稱,那麼這個樹是對稱的。

如果同時滿足下面的條件,兩個樹互為映象:

1、它們的兩個根結點具有相同的值。

2、每個樹的右子樹都與另乙個樹的左子樹映象對稱:左子樹的左節點和右子樹的右節點相等;左子樹的右節點與右子樹的左節點相等;

class

solution

private

:bool

issymmetric2

(treenode* pl,treenode* pr)

if(pl==

null

||pr==

null)if

(pl-

>val==pr-

>val)

return

false

;// 只是為了給出返回值而已}}

;

解法二: 迭代法

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

public

boolean

issymmetric

(treenode root)

return

true

;}

現在能做到的事情,就現在做,絕不拖累子孫後代;

動手刷LeetCode 給節點數找所有二叉樹

給出節點數,然後找出所有可能的二叉樹形狀 搞懂遞迴和動態規劃 我們從序列 1 n 中取出數字 i,作為當前樹的樹根。於是,剩餘 i 1 個元素可用於左子樹,n i 個元素用於右子樹 不行,我感覺遞迴太難理解了 宣布失敗 class solution return solve 1 n private ...

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...