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 }
转载于:https://www.cnblogs.com/liangyan19910818/archive/2012/10/26/2741253.html