我试图遍历Java中的BST以在它与参数匹配时返回节点数据。但是,我遇到的问题是,当递归函数找到该节点时,它会正确返回所需的节点数据,但还会返回该路径的所有其他节点数据,以到达所需的节点。
我尝试调整递归return语句并创建变量以存储最终结果,然后返回该变量,但两者都不起作用或仍然具有过多的返回结果。
关于此文件的几点注释,当前是节点,有很多基本的BST函数,但它们的命名略有不同。 getData()
从节点中提取数据,getLeftChild()
获得左子节点,getRightChild()
得到右子节点,toString()
仅以一种奇特的方式返回数据。
private static String nodeLookup(String s, Node current) {
String returnMeaningStatement;
int compareInt = s.compareTo(current.getData().toLowerCase());
if (compareInt == 0){
return current.toString();
}
else if (compareInt <=-1){
if (current.getLeftChild() == null){
throw new NoSuchElementException();
}
else {
return nodeLookup(s, current.getLeftChild());
}
}
else{
if (current.getRightChild() == null){
throw new NoSuchElementException();
}
else {
return nodeLookup(s, current.getRightChild());
}
}
如果到所需节点的路径是节点1,节点2,节点3,并且这些节点中的数据是: 节点1:您好 节点2:我的名字 节点3:是
期望的返回结果应该是
是
实际结果是
你好我的名字是
答案 0 :(得分:0)
我认为问题出在return current.toString();
行
我不知道current.toString()
返回什么,但是我猜想它返回了路径。
尝试将其替换为return current.getData()