小编典典

在BST中找到所有小于x的数字

algorithm

我该怎么办?我不确定何时停止bst搜索。


阅读 317

收藏
2020-07-28

共1个答案

小编典典

如果树的每个节点都有一个字段numLeft可以告诉您其左子树中有多少个节点(也可以自己计算),则可以在O(log N)

只需numLeft为每个值小于的节点添加一个全局结果变量x

countLessThan(int x, node T)
    if T = null
        return
    if T.value >= x
        countLessThan(x, T.left) // T.left contains only numbers < T.value and T.right only numbers > T.value
    else
        globalResult += T.numLeft
        countLessThan(x, T.right)

这只会计算数字。如果要打印它们,则需要编写深度优先遍历,以打印作为参数给出的子树。您可以在网上找到很多这样的东西,所以我不会发布。

2020-07-28