B +树插入顺序

时间:2020-10-18 17:46:16

标签: algorithm data-structures b-tree

是否可以找到B +树的原始插入顺序?

我有这棵树:

{[(1 2)3(5 6 7)] 8 [(9 10)11(12 13)14(14 16 17)18(19 20)]}

Example tree

1 个答案:

答案 0 :(得分:1)

否。

例如,在您的情况下,最后两个插入可能是7, 1717, 7,并且绝对没有办法确定哪个是哪个。的确,5, 6, 7中的三个是在其他两个之后插入的,没有记录是哪个。

这也可以从鸽子洞原理立即看出。首先,让我们对其中包含k事物的n方式B树进行上限。

具有b-tree的任何n的结构都可以编码为节点大小的流。从顶层节点的大小,您知道有多少第二层节点,从第二层到第三层也一样。节点中可以有1..k个事物中的任何一个。节点不能超过元素。因此,我们可以通过首先指定有多少个节点,然后指定节点的大小来指定B树。 (并非所有数字集都是B树。)对于B树的每个大小s,其中有k^s <= k^n个。因此,n k^n是可以有多少个k方式B树的上限。这就是指数增长。

但是可以插入元素的订单数为n!。此函数的增长严格快于指数增长,因此您无法从B树恢复订单。