請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。
分析,如果一顆二叉樹和它的映象一樣,那麼他是對稱的
定義乙個對稱的前序遍歷,先遍歷根節點,右節點,左節點,
如果兩個序列時一樣的,那麼樹是對稱的
public boolean issysmmetricaltree(treenode root)
return isequal(root.left,root.right);
}private boolean isequal(treenode root1, treenode root2)
if(root1==null||root2==null)
return root1==root2&&
isequal(root1.left,root2.right)&&
isequal(root2.left,root1.right);
}
完整**,帶測試
package com.helan.d;
public class issysmmetrical
public treenode(int val)
}public boolean issysmmetricaltree(treenode root)
return isequal(root.left,root.right);
}private boolean isequal(treenode root1, treenode root2)
if(root1==null||root2==null)
return root1.val==root2.val&&
isequal(root1.left,root2.right)&&
isequal(root1.right,root2.left);
}//建立二叉樹結點
public static treenode createbinarytreenode(int val)
//連線二叉樹結點
public static void connecttreenodes(treenode pparents, treenode pleft,treenode pright)
}// ********************測試**********************
public void test(string testname, treenode proot, boolean expected)
// 8
// 6 6
// 5 7 7 5
public void test1()
// 8
// 6 9
// 5 7 7 5
void test2()
// 8
// 6 6
// 5 7 7
void test3()
// 5
// / \
// 3 3
// / \
// 4 4
// / \
// 2 2
// / \
// 1 1
void test4()
// 5
// / \
// 3 3
// / \
// 4 4
// / \
// 6 2
// / \
// 1 1
void test5()
// 5
// / \
// 3 3
// / \
// 4 4
// / \
// 2 2
// \
// 1
void test6()
// 只有乙個結點
void test7()
// 沒有結點
void test8()
// 所有結點都有相同的值,樹對稱
// 5
// / \
// 5 5
// / \
// 5 5
// / \
// 5 5
void test9()
// 所有結點都有相同的值,樹不對稱
// 5
// / \
// 5 5
// / \
// 5 5
// / /
// 5 5
void test10()
public static void main(string args)
}
對稱二叉樹c 對稱的二叉樹
很簡單,關鍵還是知道怎麼樣才能判斷乙個 二叉樹是否對稱,只要採用前序 中序 後序 層次遍歷等任何一種遍歷方法,分為先左後右和先 右後左兩種方法,只要兩次結果相等就說明這棵樹是一顆對稱二叉樹。迭代版本 class solution public bool issymmetric treenode ro...
對稱二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。這題還是蠻簡單的。對稱二叉樹 include using namespace std struct treenode bool issymmetrical treenode proot1,t...
對稱二叉樹
請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。solution public class treenode 我們可以通過比較二叉樹的前序遍歷序列和對稱前序遍歷序列來判斷二叉樹是不是對稱的 public class solution bo...