對稱二叉樹
對稱二叉樹如何將陣列轉化為二叉樹給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [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
1/
2 2/ \ /
3 4 4 3
0 1 2 3 4 5 6
integer arr =
索引 元素 左子樹索引 右子樹索引
0 1 1 2
1 2 3 4
2 2 5 6
…i 2i+1 2i+2
判斷是否對稱
將樹拆解為 左子樹a 右子樹b
a的左子樹和b的右子樹要對稱
a的右子樹和b的左子樹要對稱
非遞迴的方式——廣度優先遍歷
存入左子樹和右子樹 再取出兩個子樹 判斷是否對稱
public static boolean issymmetric(treenode root)
// 將樹拆解為 左子樹a 右子樹b
// a的左子樹和b的右子樹要對稱
// a的右子樹和b的左子樹要對稱
public static boolean ismirror(treenode node1, treenode node2)
public static boolean issymmetric1(treenode root)
return true;
}
二叉樹應用 二叉樹映象(對稱)
題目 完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。如 分析 對於乙個二叉樹的映象過程,我們可以先前序遍歷這棵樹的每乙個節點,如果遍歷到的節點有子節點,就交換它的兩個子節點。當交換完所有的飛葉子節點之後,就得到了樹的映象。具體實現 struct treenode void mirrorrecur...
對稱二叉樹c 對稱的二叉樹
很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。迭代版本 class solution public bool issymmetric treenode ro...
對稱二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。這題還是蠻簡單的。對稱二叉樹 include using namespace std struct treenode bool issymmetrical treenode proot1,t...