我刚学习DBMS中的B-tree和B + -tree。 我不明白为什么树中的非叶节点在[n / 2]和n个子节点之间,当n为特定树修复时。
为什么?这有什么好处?
谢谢!
答案 0 :(得分:1)
这是使B +和B树平衡的特性,由于它,我们可以很容易地计算树上ops的复杂性并将其绑定到O(logn)[其中n是元素的数量数据集]。
小现象:除了根之外,每个非叶节点都有B / 2到B的子节点。只允许根用于少于B / 2的儿子。
答案 1 :(得分:0)
这种结构的基本假设是具有固定的块大小,这就是为什么每个内部块都有n
个槽用于索引其子节点的原因。
如果需要将子项添加到已满的块(具有正好n
个子项),则将块拆分为两个块,然后替换其父索引中的原始块。两个区块中每个区块中的子项数明显为n div 2
(假设n
为偶数)。这就是下限的来源。
如果父级已满,则操作会重复,可能会重复到根本身。
拆分操作并允许n/2
- 填充块允许大多数插入/删除仅导致本地更改,而不是重新平衡树的大部分。