今天練習用java實現二叉樹的遍歷算法,首先我先編寫二叉樹類BinaryTree,代碼如下:
package package2;
public class BinaryTree {
int
data; //根節點數據
BinaryTree
left; //左子樹
BinaryTree
right; //右子樹
public BinaryTree(int
data) //實例化二叉樹類
{
this.data = data;
left = null;
right = null;
}
public void insert(BinaryTree root,int
data){
//向二叉樹中插入子節點
if(data>root.data) //二叉樹的左節點都比根節點小
{
if(root.right==null){
root.right
= new BinaryTree(data);
}else{
this.insert(root.right,
data);
}
}else{
//二叉樹的右節點都比根節點大
if(root.left==null){
root.left
= new BinaryTree(data);
}else{
this.insert(root.left,
data);
}
}
}
}
當建立好二叉樹類後可以創建二叉樹實例,並實現二叉樹的先根遍歷,中根遍歷,後根遍歷,代碼如下:
package package2;
public class BinaryTreePreorder {
public static void preOrder(BinaryTree
root){ //先根遍歷
if(root!=null){
System.out.print(root.data+"-");
preOrder(root.left);
preOrder(root.right);
}
}
public static void inOrder(BinaryTree
root){
//中根遍歷
if(root!=null){
inOrder(root.left);
System.out.print(root.data+"--");
inOrder(root.right);
}
}
public static void postOrder(BinaryTree
root){
//後根遍歷
if(root!=null){
postOrder(root.left);
postOrder(root.right);
System.out.print(root.data+"---");
}
}
public static void main(String[] str){
int[] array =
{12,76,35,22,16,48,90,46,9,40};
BinaryTree root = new
BinaryTree(array[0]);
//創建二叉樹
for(int
i=1;i<array.length;i++){
root.insert(root,
array[i]);
//向二叉樹中插入數據
}
System.out.println("先根遍歷:");
preOrder(root);
System.out.println();
System.out.println("中根遍歷:");
inOrder(root);
System.out.println();
System.out.println("後根遍歷:");
postOrder(root);
創建好的二叉樹圖形如下:
當運行上面的程序後結果如下:
先根遍歷:
12-9-76-35-22-16-48-46-40-90-
中根遍歷:
9--12--16--22--35--40--46--48--76--90--
後根遍歷:
9---16---22---40---46---48---35---90---76---12---
聽雨澤加油!!