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(); } } }