//定义二叉操作类 class BinaryTree{ class Node{ private Node left; //左指数 private Node right; //右指数 private Comparable data; public Node(Comparable<?> data) { this.data = data; } //二叉数据比较,大的放在右边,小的放在左边 public void addNode(Node newNode) { //放在左边 if( newNode.data.compareTo(this.data) <= 0 ) { if(this.left==null) { this.left = newNode; }else{ this.left.addNode(newNode); //向下继续判断,指针指向下一个 } } System.out.println("this.data="+this.data); System.out.println("newNode.data="+newNode.data); System.out.println("----------------->"); //放在右边 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); if(this.right != null) //存在右指数 { this.right.printNode(); //继续查找下面的右指数,指针指向下一个 } } } private Node root; public void add(Comparable data) //接受数据 { Node newNode = new Node(data); if(this.root == null) { this.root = newNode; //设为根节点 }else{ this.root.addNode(newNode); } } public void print() { //输出全部的根节点数据 this.root.printNode(); } } public class comparaDemo3 { public static void main(String args[]) { BinaryTree bt = new BinaryTree(); bt.add(3); bt.add(4); bt.add(8); bt.add(1); bt.add(6); bt.add(3); bt.add(18); bt.print(); } }
一般不推荐此方法,直接推荐,implements Comparable,实现ComparaTo()方法