好的我正在尝试编写二进制搜索树的程序。一切都看起来不错,除了我的程序继续打印这个而不仅仅是我的整数遍历遍历。我试图只是在主方法中打印并获得相同的东西?
这是我的代码:
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 :(得分:0)
在inOrder
方法中,您可以:
System.out.println(focusNode);
您正在直接打印focusNode
,因此,除非您的Node
类覆盖默认的toString
方法,否则您只会看到对象的哈希码(有关详细信息,请参阅this question如果你感兴趣)。你可能想要像
System.out.println(focusNode.getKey());
或者只是使用您编写的print
方法。
答案 1 :(得分:0)
看起来你正在尝试打印实际的Node,它只是该节点的内存地址。如果要打印整数,则应将密钥打印到节点。
print(node.getKey());