【问题标题】:How to get the n-th value of a b-tree如何获得b-tree的第n个值
【发布时间】:2020-09-25 21:42:09
【问题描述】:

是否有通用伪代码或相关数据结构来获取 b 树的第 nth 值?例如,这棵树的第八个值是 13 [1,4,9,9,11,11,12,13]

如果我有一些在 b 树中排序的值,我想找到第 nth 值而不必遍历整个树。这个问题有更好的结构吗?数据顺序可以随时更新。

【问题讨论】:

    标签: sorting data-structures b-tree b-tree-index


    【解决方案1】:

    您正在寻找order statistics tree。它的想法是除了存储在节点中的任何数据之外 - 还将子树的大小存储在节点中,并在插入和删除时保持更新。

    由于您为每个插入/删除操作“接触”O(logn) 节点 - 使其保持最新状态仍然保持这些 O(logn) 行为。

    FindKth() 然后通过消除其较大索引仍小于k 的子树来完成,并检查下一个。由于您不需要深入到每个子树的深度,只需直接到所需的那个(并检查该元素的路径中的节点) - 您需要“触摸”O(logn) 节点,这使得此操作 @ 987654327@也一样。

    【讨论】:

    • 这正是我想要的。我知道必须有人以前做过。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2015-03-05
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    相关资源
    最近更新 更多