給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
將陣列轉換為二叉樹,在進行判斷:
public class treenode
int length = arrays.length;
// 生成二叉樹節點
temps = new arraylist(length);
for (int i = 0; i < length; i++)
// 構建二叉樹 根節點n[i] 左子樹n[i*2+1] 右子樹 n[i*2+2],最後乙個結點要做判斷,
for (int i = 0; i < length / 2 - 1; i++)
/*** 當完全二叉樹最後乙個節點是其父節點的左孩子時,樹的節點數為偶數;
* 當完全二叉樹最後乙個節點是其父節點的右孩子時,樹的節點數為奇數
* 最後乙個非葉子節點的序號也是n/2-1,序號是從0開始的
*/// 處理最後乙個非葉子節點
int lastnode = length / 2 - 1;
treenode node = temps.get(lastnode);
// 新增左子樹
node.left = temps.get(lastnode * 2 + 1);
if (length % 2 != 0)
treenode root = temps.get(0);
temps.clear();
temps = null;
return root;
}//用遞迴判斷它是否是映象對稱的
public boolean issymmetric(treenode root)
private boolean issymmertric(treenode t1,treenode t2)
}
測試用例:
public class test ;
treenode root=treenode.arraystotree(n);
system.out.println(new treenode().issymmetric(root));}}
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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。思路 遞迴就用dfs,迭代是b...
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說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。解題思路 對稱二叉樹可以理解...
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 說明 如果你可以運用遞迴和迭代兩種方法解決這個問題,會很加分。使用輔助空間佇列 defi...