Dum*_*314 2 java recursion binary-search-tree
我是递归的新手,我不明白为什么这个函数不能编译.它显然缺少一份退货声明.从测试来看,似乎我的返回语句不会返回?
// recursive search method
public BinaryTree<T> recursiveSearch(BinaryTree<T> t, T key) {
if (key.compareTo(t.getData()) < 0) {
if (t.getLeft() != null) {
recursiveSearch(t.getLeft(), key);
} else {
return null;
}
} else if (key.compareTo(t.getData()) > 0) {
if (t.getRight() != null) {
recursiveSearch(t.getRight(), key);
} else {
return null;
}
} else if (key.compareTo(t.getData()) == 0) { // key is found
return t;
} else { // not in binary tree
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
问题if
在于进行递归调用的分支内部的行.
当您的代码到达任何else
分支时,它们的行为都会正确,因为它们都具有return null
.if
但是,如果代码采用其中一个分支,则控件将到达方法的末尾而不会触及return
.修复很简单 - 添加缺少的return
s:
return recursiveSearch(t.getRight(), key);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
405 次 |
最近记录: |