二叉树实例

public class BinaryTree {
    class Node {                                        //声明一个节点类
        private Comparable data;                        //保存具体内容
        private Node left;                                //保存左子树
        private Node right;                                //保存右字数
        private Node(Comparable data) {
            this.data=data;
        }
        /**
         * 添加方法
         */
        public void addNOde(Node newNode){
            if(newNode.data .compareTo(this.data)<0){
                if(this.left == null){
                    this.left=newNode;                    //放在左子树
                }else{
                    this.left.addNOde(newNode);
                }
            }else{
                if(this.right == null){                    //放在右子树
                    this.right=newNode;
                }else{
                    this.right.addNOde(newNode);
                }
            }
        }
        /**
         * 输出信息,输出时采用中序遍历
         */
        public void printNode(){
            if(this.left!=null){
                this.left.printNode();                    //先输出左子树
            }
            System.out.print(this.data +"	");
            if(this.right != null){                        //再输出右子数
                this.right.printNode();
            }
        }
    }
    private Node root ;                                    //根元素
    /**
     * 添加的方法
     */
    public void add(Comparable data){
        Node newNode = new Node(data);                    //每传入一个新的内容,就声明一个节点
        if(root == null){
            root = newNode;                                //如果是第一个元素,设置成根节点
        }else{
            root.addNOde(newNode);                        //确定节点是放在左面还是右面
        }
    }
    /**
     * 打印方法
     */
    public void print (){
        if(this.root!=null){                            //数据不为空 ,输出内容
            this.root.printNode();
        }
    }
}
原文地址:https://www.cnblogs.com/ak666/p/8073987.html