[英]B+ tree insertion order
有没有办法找到B+树的原始插入顺序?
我有这棵树:
{ [ (1 2) 3 (5 6 7) ] 8 [ (9 10) 11 (12 13) 14 (14 16 17) 18 ( 19 20) ] }
不。
例如,在您的情况下,最后两个插入可能是7, 17
或17, 7
并且绝对无法分辨哪个是哪个。 确实, 5, 6, 7
三者中的一个是在另外两个之后插入的,没有记录哪个是哪个。
这也可以从鸽巢原理中直接看出。 首先,让我们为可以有多少k
路 B 树设置一个上限,其中有n
东西。
任何具有n
事物的b-tree
的结构都可以编码为节点大小的流。 从顶层节点的大小,你知道有多少第二层节点,第二层第三层也是如此。 一个节点可以有1..k
东西。 节点不能多于元素。 因此,我们可以通过首先指定有多少个节点,然后指定节点的大小来指定 B 树。 (并非所有数字集都是 B 树。)对于 B 树的每个大小s
,都有k^s <= k^n
个。 因此nk^n
是可以有多少k
路 B 树的上限。 这是指数增长。
但是可以插入元素的顺序数是n!
. 此函数的增长速度严格快于指数增长,因此您无法从 B 树中恢复顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.