Comparableインタフェースに基づくツリー操作
9012 ワード
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 }