【发布时间】:2017-10-22 18:17:12
【问题描述】:
我有一个普通的二叉搜索树,它使用数据的字符串值以及左右节点来实现。树工作正常,但我的 rankOf 函数有问题。我使用递归来查找节点,并且当元素存在时该方法成功,但是当不存在的值不起作用时,我无法弄清楚如何在其中设置布尔值来帮助解决这个问题。代码如下:
private int rankOf(String s, Node n){
if (n != null){
//check root
if (s.compareTo(n.value) == 0){
if (n.left != null){
return size(n.left);
}
return 0;
}
// only worry about left tree, easy
if (s.compareTo(n.value) < 0){
return rankOf(s, n.left);
} else {
// must count entire left tree plus root node
return rankOf(s, n.right) + size(n.left) + 1;
}
}
//null or not found
return 0;
}
当 root 等于该值时,我知道元素在树中,所以应该有一些东西进去,但不确定如何处理。
【问题讨论】:
-
“但是当不存在的值不起作用时”它会引发异常?请张贴你的树
-
您的
size方法返回什么?另外,如果成功/失败,您的方法应该返回什么? -
@SchiduLuca Size 返回传递的节点的子树上的节点数量。如果失败,它可以返回 -1。
-
@CodeIsLife 它不会抛出异常,它只会返回排名,就好像值存在一样。例如,如果树包含 A、B 和 C,并且您尝试查找 D 的等级,即使 D 不在树中,它也会返回 3(比 D 小 3 个节点)。
标签: java recursion binary-search-tree