代码之家  ›  专栏  ›  技术社区  ›  Idan

在RBO(logn)树中查找算法

  •  4
  • Idan  · 技术社区  · 16 年前

    我需要找到一个数据结构,我可以通过以下操作来完成:

    • 构建(S,k)-O(nlogn)
    • 搜索(S,k)-O(logn)
    • 插入(S,k)-O(logn)
    • 删除(S,k)-O(logn)
    • 减少至(s,k,d)-O(logn)-此方法应减去d(d>0)属于<=K

    然而,我不能得出一个关于减少到O(Logn)的解决方案。 如果k大于树中的max键,会发生什么情况?在这种情况下,我必须更新整个树。

    1 回复  |  直到 13 年前
        1
  •  4
  •   svick Raja Nadar    16 年前

    您可以在树的每个节点中存储一个额外的值,我们称之为delta。将节点的增量添加到存储在其所有子体中的关键点,以获取实际关键点。因此,要获得特定节点中某个键的实际值,需要对从根节点到该节点的所有增量求和,然后将该和添加到存储的键中。

    Decrease-Upto ,您只需从根目录更改一条路径上的O(logn)节点的增量。