[英]Getting Node Address instead of Value in Binary Search Tree
我在Java中有一个基本的二进制搜索树。 我正在尝试输出变量值,但是我得到的只是地址而不是值本身。 另外,即使我自己不自己称呼,也可以有人解释我的inOrderTraversal方法中的代码及其与Node类中的display()
之间的关系吗? 我要在main中调用的只是addNode和inorderTraversal。
以下是我的代码:
class Node {
int value;
Node leftChild;
Node rightChild;
Node(int value, String name) {
this.value = value;
this.name = name;
}
public int displayNode() {
return value;
}
}
InOrderTraversal方法:
public void inOrderTraverseTree(Node focusNode) {
if (focusNode != null) {
// Traverse the left node
inOrderTraverseTree(focusNode.leftChild);
// Visit the currently focused on node
System.out.print(focusNode + " ");
// Traverse the right node
inOrderTraverseTree(focusNode.rightChild);
}
}
当前输出: Node@7852e922 Node@4e25154f Node@70dea4e Node@5c647e05 Node@33909752 Node@55f96302
期望的输出: 5 10 15 20 25 30
我对C ++非常熟悉,只是自学Java并遇到了这些特殊问题。
您正在打印一个对象,而不是其内部值(换句话说,您正在隐式调用toString()
)。
为了打印值,您应该从Node对象获取值:
System.out.print(focusNode.displayNode() + " ");
另外,我建议您将displayNode()
方法重命名为getValue()
,因为它可以更好地说明该方法的作用。
并且如果您希望您的方法在调用System.out.println(object);
时打印某些内容System.out.println(object);
,则应在Node类中重写toString()
方法:
@Override
public String toString() {
return this.value;
}
然后您的代码System.out.print(focusNode + " ");
将显示节点的值,而不是对象的地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.