經典應用之對稱二叉樹

2021-10-19 09:41:47 字數 876 閱讀 9790

對稱二叉樹

對稱二叉樹

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

例如,二叉樹 [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...