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二叉树的遍历算法

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