判斷是否為對稱二叉樹;
樹的增刪改查基本操作;
解法一:遞迴
如果乙個樹的左子樹與右子樹映象對稱,那麼這個樹是對稱的。
如果同時滿足下面的條件,兩個樹互為映象:
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...