基于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 }

 

你可能感兴趣的:(comparable)