您的位置:首页 > 其它

基于Comparable接口实现的二叉树操作

2012-10-26 15:07 176 查看
class BinaryTree{
class Node{                                           //声明一个节点类
private Comparable data;                           //保存具体的内容
private Node left ;
private Node right ;
public void addNode(Node newNode){
if(newNode.data.compareTo(this.data) < 0){     //要确定是放在左子树还是右子树
if(this.left == null){
this.left = newNode;
}else{
this.left.addNode(newNode);
}
}
if(newNode.data.compareTo(this.data) > 0){
if(this.right ==null){
this.right = newNode;
}else{
this.right.addNode(newNode);
}
}
}
public void printNode(){                                //输出时采用中序便历
if(this.left != null){
this.left.printNode();
}
System.out.println(this.data + "\t");               //输出根节点
if(this.right != null){
this.right.printNode();
}
}
}
private Node root;                                           //根元素
public void add(Comparable data){
Node newNode = new Node();                               //每传入一个新的内容就声明一个根节点
newNode.data = data ;
if(root == null){                                       //如果是第一个元素就设置为根元素
root = newNode;
}else{
root.addNode(newNode);                               //调用函数确定节点放的位置
}
}
public void print(){
this.root.printNode();
}
}
public class ComparableDemo{
public static void main(String args[]){
BinaryTree bt = new BinaryTree();
bt.add(8);
bt.add(3);
bt.add(3);
bt.add(5);
bt.add(7);
bt.add(1);
bt.add(0);
bt.add(6);
bt.add(6);
bt.add(9);
System.out.println("排序之后的结果:");
bt.print();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: