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

 1 class BinaryTree{
 2     class Node{                                           //声明一个节点类
 3         private Comparable data;                           //保存具体的内容    
 4         private Node left ;                    
 5         private Node right ;
 6         public void addNode(Node newNode){                              
 7             if(newNode.data.compareTo(this.data) < 0){     //要确定是放在左子树还是右子树                       
 8                 if(this.left == null){
 9                     this.left = newNode;
10                 }else{
11                     this.left.addNode(newNode);
12                 }
13             }
14             if(newNode.data.compareTo(this.data) > 0){
15                 if(this.right ==null){
16                     this.right = newNode;
17                 }else{
18                     this.right.addNode(newNode);
19                 }
20             }
21         }
22         public void printNode(){                                //输出时采用中序便历
23             if(this.left != null){
24                 this.left.printNode();
25             }
26             System.out.println(this.data + "\t");               //输出根节点
27             if(this.right != null){
28                 this.right.printNode();
29             }
30         }
31     }
32     private Node root;                                           //根元素
33     public void add(Comparable data){
34         Node newNode = new Node();                               //每传入一个新的内容就声明一个根节点
35         newNode.data = data ;
36         if(root == null){                                       //如果是第一个元素就设置为根元素
37             root = newNode;
38         }else{
39             root.addNode(newNode);                               //调用函数确定节点放的位置
40         }
41     }
42     public void print(){
43         this.root.printNode();
44     }
45 }
46 public class ComparableDemo{
47     public static void main(String args[]){
48         BinaryTree bt = new BinaryTree();
49         bt.add(8);
50         bt.add(3);
51         bt.add(3);
52         bt.add(5);
53         bt.add(7);
54         bt.add(1);
55         bt.add(0);
56         bt.add(6);
57         bt.add(6);
58         bt.add(9);
59         System.out.println("排序之后的结果:");
60         bt.print();
61     }
62 }

 

posted @ 2012-10-26 15:07  MATRIX | yan  阅读(322)  评论(0编辑  收藏  举报