0
我试图找到比二进制搜索树中的给定值更高的数值,以获得乐趣和学习过度。我已经用纸上的逻辑书写了迄今为止的一项索取功能。但是,当我运行它时,它没有给出预期的结果。例如,BST中包含30, 25, 98, 23, 28, 97, 99, 29
。我试图获得比28
更大的值应该是5
,但输出是2
。方法中的问题在哪里?我遍历树中的所有节点,是否有更高效的解决方案?找到比BST中的给定值更高的值的数字
public int findMax(Node<E> localRoot, E target) {
if (localRoot == null) return 0;
int cmpResult = target.compareTo(localRoot.data);
int valL = findMax(localRoot.left, target) + cmpResult < 0 ? 1 : 0;
int valR = findMax(localRoot.right, target) + cmpResult < 0 ? 1 : 0;
return valL + valR;
}
感谢您的回复,但我不明白为什么只有2结果。但是,即使在改为括号后,我的方法仍然有错误。 – snr
我刚才也注意到你正在将本地节点结果添加到左侧和右侧。您应该只添加一次本地节点结果。根据本地节点结果将左侧和右侧添加到0或1。我可以在30分钟左右看更多。对不起,现在不能做更多。 – pacifier21
你能根据你的回复编辑你的答案吗? – snr