java版二叉查找樹實現,及前中後序遍歷

package cn.cobala.experience.road;

public class BinaryTree {

    int data;
    BinaryTree left;
    BinaryTree right;

    public BinaryTree(int data) {
        this.data = data;
        left = null;
        right = null;
    }


    /**
     * 二叉樹左葉子節點的值比根節點小,右葉子節點的值比根大
     * @param root
     * @param data
     */
    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);
            }
        }
    }


    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[] args) {
        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---

創建的二叉樹圖:

java二叉樹的遍歷算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章