在BST中计算少于X的节点数

时间:2019-02-13 07:15:27

标签: java binary-tree

我有一个代码可以解决这些问题。您能否给我一些提示或指导,以说明我正在犯的错误或应该做出的任何更改?错误是:

BSTNode'<'Golfer'>'无法转换为BinarySearchTree'<'Golfer'>'。

public int countLess (BinarySearchTree <Golfer> tree, int value) {
BSTNode<Golfer> node = tree.node;

if (node == null) 
return 0;

int left = countLess(node.getLeft(), value);
int right  = countRight(node.getRight(), value);
return (node.getInfo() > maxValue ? 1:0) + countLeft + countRight;
}

2 个答案:

答案 0 :(得分:1)

我认为应该是这样的,因为我猜node.getLeft()实际上为您提供了BST中的节点而不是完整的Left Subtree。

public int countLess (BSTNode <Golfer> node, int value) {
    if (node == null) 
         return 0;
    int left = countLess(node.getLeft(), value);
    int right  = countLess(node.getRight(), value);
    return (node.getInfo() > maxValue ? 1:0) + left + right;
}

希望这可以解决您的问题。如果可以共享BinarySearchTree的实现和BSTNode类的实现,我可以提供一种更正确的解决方案。

答案 1 :(得分:0)

我认为您应该对BST进行有序遍历。 BST的有序遍历始终为您提供按升序排列的元素。只需在进行有序遍历时保留count变量(并为访问的每个节点不断增加变量),然后任何节点的值都超过X,就可以“中断”。

您的count变量中的最终值将是答案。

BST:二进制搜索树