我正在研究 Java 二叉搜索树,并且我正在尝试使用 find()
中的方法 findHelp()
。我期望返回值 rt.getValue()
(这是 C2-112,因为我在返回之前打印出来),但打印出 findHelp help 方法中的 ()
返回 null
。
我在网上找不到类似的错误,有人可以帮我解决,或者提供类似问题的链接吗?
这是我的代码
private E findHelp(BinaryNode<Key, E> rt, Key k) {
int compare = k.compareTo(rt.getKey());
if (compare==0) {
System.out.println(rt.getValue()); // I'm getting C2-112 here
return rt.getValue(); // so I expect a return of C2-112
} else if (compare >0 ) {
if (rt.getRight() == null) {
return null;
} else {
findHelp(rt.getRight(), k);
}
} else {
if (rt.getLeft() == null) {
return null;
} else {
findHelp(rt.getLeft(), k);
}
}
return null;
} //
public E find(Key k) {
E tmp = findHelp(root, k);
System.out.println(tmp); // this prints null, not C2-112
return findHelp(root, k); // and so I return null
}
最佳答案
在每个 findHelp(...)
之前添加一个 return
关于Java 方法给出意外的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875287/