实现查找二叉树

查找二叉树:左子节点<父节点 ,右子节点>父节点。root节点的所有左边子孙节点都小于root节点,root节点的所有右边子孙节点都大于root节点。

public class serachBinaryTree {
    private TreeNode2 root;               //创建根节点
    public void serachBinaryTree(){       //serachBinaryTree构造函数
    }

    public TreeNode2 put(int data){         //往树中查找建立二叉树
        TreeNode2 node = null;                 //定义当前节点node
        TreeNode2 parent = null;                //定义当前节点的父节点
        if(root == null){
            node = new TreeNode2(0,data);
            root = node;
        }
        else {
            node = root;
            while(node != null){                   //当当前节点node为空时,退出当前节点
                parent = node;                      //将当前节点赋值给父节点
                if(data < node.data){
                    node = node.leftChild;          //当前节点变为其左节点
                }
                else if(data > node.data){        //当前节点变为其右节点
                    node = node.rightChild;
                }
                else {
                    return null;
                }
            } 
        }

        node = new TreeNode2(0,data);      //将输入的data数据封装到当前节点node
        if(data < parent.data){            //当前节点与父节点建立连接关系
            parent.leftChild = node;
            node.parent = parent;
        }
        else if(data > parent.data){
            parent.rightChild = node;
            node.parent = parent;
        }
       return node;
    }

    public void midOrder(TreeNode2 node){    //递归中序遍历
        if(node == null){
            return ;
        }
        midOrder(node.leftChild);
        System.out.println("data is"+node.data);
        midOrder(node.rightChild);
    }
    public static void main(String []args){
        serachBinaryTree binarytree = new serachBinaryTree();
        int [] shuju = new int[]{13,8,29,10,23,87,65,33};    //定义一个乱序数组
        for(int i : shuju){                   //将数组中值建立起一颗查找二叉树
            binarytree.put(i);
        }
        binarytree.midOrder(binarytree.root);
    }
    class TreeNode2{
        private int index;
        private int data;
        private TreeNode2 leftChild;
        private TreeNode2 rightChild;
        private TreeNode2 parent;
        TreeNode2(int index, int data){
            this.index = index;
            this.data = data;
        }
    }
}

结果:将建立起的查找二叉树采用中序遍历的方法打印出来,得出从小到大排列的序列。
在这里插入图片描述