【问题标题】:BST search problenBST 搜索问题
【发布时间】:2016-06-13 06:16:09
【问题描述】:

我已经实现了一个 BST,它的 n 个节点中包含一个 Point (x,y) 类型的对象,树中的顺序是根据 X 的值。

我需要实现一个函数,将 X 的范围(x 左,x 右)作为输入 输出是 (编辑):Y在范围内的坐标之和(包括)。

通过“遍历”所有节点来做到这一点并不难,问题是我要求在 O(logn) 复杂性中做到这一点。

我考虑过初始化范围字段和 Y 的总和,但不知何故它不适用于插入和删除函数。 有任何想法吗?

【问题讨论】:

  • 我很确定他们的意思是O(log n + |right-left|),它仍然是O(log n),但变量更多。
  • 另外,您可以将所有点的总和累加并缓存在每个节点中,这样您只需查看边缘即可快速找到范围的总和。

标签: oop binary-search-tree


【解决方案1】:

查找范围的每一端是O(log n) 复杂度。无需查看树中的所有节点。

如果您需要对范围的数字求和,则取高边界减去低边界(假设是连续的线性范围)是一个常数时间运算。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2020-01-24
    • 1970-01-01
    • 2021-10-27
    • 2016-04-01
    相关资源
    最近更新 更多