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 +"\t");
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();
}
}
}