二进制搜索树中小于键的节点数

时间:2018-11-10 18:41:53

标签: java binary-search-tree

经过数小时的研究,我似乎仍然无法提出可行的解决方案。

The Problem

11.13二叉树引导的信息流 X279:二进制搜索树小计数练习

1 个答案:

答案 0 :(得分:2)

else if情况下,您正在计数当前节点左右两边的子树,从而计算了整个树。尝试在不同情况下拆分两个递归函数调用。

我的第一个答案无效。这个新的。

第一个问题是您实际上并没有计算任何东西,您只是递归地遍历每个节点并检查其值。

第二,该检查也无法按预期进行。您必须检查当前节点是否应该计数。您还应该在树的下方继续计算,因为这些节点可能比键小。

我的工作实现:

public int BSTsmallcount(BinNode root, int key)
{
    int count = 0;

    if (root == null) {
        return 0;
    }
    else if (root.value() < key) {
        count++;
        count += BSTsmallcount(root.left(), key);
        count += BSTsmallcount(root.right(), key);
    }
    else {
        count += BSTsmallcount(root.left(), key);
    }

    return count;
}