2014-04-18 94 views
0

好吧,我正在嘗試編寫二進制搜索樹的程序。一切看起來都不錯,除了我的程序一直在打印這個,而不僅僅是我的inorder遍歷整數。我試圖只在主要方法中打印println,並得到了同樣的東西?java程序打印奇怪的十六進制輸出

這是我的代碼:

public class bst { 
    Node root; 

    public Node getRoot(){ 
     return root; 
    } 

    public bst(){ 
     root=null; 
    } 

    //method addNode 
    public void insert(int key){ 

     Node newNode= new Node(key);//initialize Node 

     if(root==null){ 

      root=newNode; 

     }else{ 
     Node focusNode=root;   
     Node insNode=root; 

     while(insNode!=null){ 
      focusNode=insNode; 

      if(key<focusNode.getKey()){ 
       insNode=insNode.getLeft(); 
      } 
      else{ 
       insNode=insNode.getRight(); 
      } 
     } 

     if(key<focusNode.getKey()){ 
      focusNode.setLeft(newNode); 
     } 
     else{ 
      focusNode.setRight(newNode); 
      }  
     } 
    } 


    public void inOrder(Node focusNode){ 

     if (focusNode !=null){ 

      inOrder(focusNode.leftChild); 

      System.out.println(focusNode); 

      inOrder(focusNode.rightChild); 

     } 
    } 


//Node class 
    class Node{ 

     int key;   
     Node leftChild; 
     Node rightChild; 

     //Node constructor 
     Node(int key){ 
      this.key=key; 
      leftChild=null; 
      rightChild=null; 
      } 
     public void setLeft(Node left){ 
      this.leftChild=left;    
     } 
     public void setRight(Node right){ 
      this.rightChild=right;  
     } 
     public Node getLeft(){return leftChild;} 
     public Node getRight(){return rightChild;} 
     public void setKey(int k){this.key=k;} 
     public int getKey(){return key;} 
     public void print(){ 
      System.out.println(getKey()); 
     } 
     } 


    public static void main(String[] args){ 

     bst theTree= new bst(); 

     theTree.insert(30); 
     theTree.insert(60); 
     theTree.insert(50); 
     theTree.insert(70); 

     theTree.inOrder(theTree.getRoot()); 


    } 

} 

回答

0

inOrder方法,你這樣做:

System.out.println(focusNode); 

您直接打印focusNode,所以,除非你Node類重寫了默認toString方法,你只查看您的對象的哈希碼(如果您有興趣,請參閱this question瞭解詳細信息)。您可能想要類似

System.out.println(focusNode.getKey()); 

或者只是使用您編寫的print方法。

0

看起來您正在嘗試打印實際的節點,它只是該節點的內存地址。如果要打印整數,則應該將鍵打印到節點。

print(node.getKey());