这循环输出的结果 居然是这样的。
class BinaryTree{class Node{
private Comparable data ;
private Node left ;
private Node right ;
public Node(Comparable data){
this.data = data ;
}
public void addNode(Node newNode){
if(newNode.(this.data)<0){
if(this.left==null){
this.left = newNode ;
}else{
this.left.addNode(newNode) ;
}
}
if(newNode.(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.print(this.data + "\t") ;
if(this.right!=null){
this.right.printNode() ;
}
}
//--------------------------------------------------------------------------------------------
};
private Node root ;
public void add(Comparable data){
Node newNode = new Node(data) ;
if(root==null){
root = newNode ;
}else{
root.addNode(newNode) ;
}
}
public void print(){
this.root.printNode() ;
}
};
public class ComparableDemo03{
public static void main(String args[]){
BinaryTree bt = new BinaryTree() ;
bt.add(8) ;
bt.add(3) ;
bt.add(3) ;
bt.add(10) ;
bt.add(9) ;
bt.add(1) ;
bt.add(5) ;
bt.add(5) ;
System.out.println("排序之后的结果:") ;
bt.print() ;
}
};
/* 结果如下
D:\99.7_testj>javac ComparableDemo03.java
注: ComparableDemo03.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
D:\99.7_testj>java ComparableDemo03
排序之后的结果:
1 3 3 5 5 8 9 10
*/
为什么不会是一个不断调用的死循环啊?
哪位高手可以详细解说一下哈。