gpt4 book ai didi

java - 为什么在我的 BST 中序遍历中显示的是指针而不是字符串?

转载 作者:行者123 更新时间:2023-11-29 06:56:48 25 4
gpt4 key购买 nike

下面是打印二叉搜索树中序遍历的代码: 公共(public)类 BSTPrint {

public void printInorder(BSTNode root){
if (root!=null){
printInorder(root.getLeftNode());
System.out.println(root.getNodeValue());
printInorder(root.getRightNode());
}

}

public static void main(String[] argc){
BSTPrint bstPrint = new BSTPrint();
BSTNode<String> root=new BSTNode<String>();
root.setNodeValue("5");
BSTNode<String> rootLeft= new BSTNode<String>();
rootLeft.setNodeValue("3");
root.setLeftNode(rootLeft);
BSTNode<String> rootRight= new BSTNode<String>();
rootRight.setNodeValue("8");
root.setRightNode(rootRight);
bstPrint.printInorder(root);
}
}

这是 BSTNode 类:

public class BSTNode<E> {
private E value;
private BSTNode<E> leftNode=null;
private BSTNode<E> rightNode=null;

public BSTNode getLeftNode(){
return this.leftNode;
}
public void setLeftNode(BSTNode rootLeft){
BSTNode newLeftNode=new BSTNode();
newLeftNode.leftNode=null;
this.leftNode=newLeftNode;
newLeftNode.value=rootLeft;
}
public BSTNode getRightNode(){
return this.rightNode;
}
public void setRightNode(BSTNode rootRight){
BSTNode newRightNode=new BSTNode();
newRightNode.rightNode=null;
this.rightNode=newRightNode;
newRightNode.value=rootRight;
}

public E getNodeValue(){
return this.value;
}

public void setNodeValue(E value){
this.value=value;
}

}

为什么我看到的结果如下所示?

BSTNode@246f9f88
5
BSTNode@1c52ac68

代替

3
5
8

最佳答案

printInOrder工作正常。左节点的值不是 3;左节点的值是另一个节点,因为 setLeftNode :

public void setLeftNode(BSTNode rootLeft){
BSTNode newLeftNode=new BSTNode();
newLeftNode.leftNode=null;
this.leftNode=newLeftNode;
newLeftNode.value=rootLeft;
}

没有 Hook 提供的 rootLeft节点进入 this.leftNode .它正在创建另一个节点成为 leftNode并将该节点的设置为rootLeft .同样的问题出现在setRightNode .

您需要修复 setLeftNodesetRightNode .另外,如果您使用的是 IDE(例如 Eclipse),您知道 IDE 显示黄色警告指示器的所有这些地方吗?如果您将鼠标悬停在那些地方,它会说您没有正确使用泛型?如果您包含了 <E>当 IDE 警告您时,编译器会捕获 setLeftNode 中的错误。和 setRightNode给你。

关于java - 为什么在我的 BST 中序遍历中显示的是指针而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32919528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com