B+ 树序 1 & 2

B+ Tree order of 1 & 2

我对在顺序为 1 和顺序为 2 的 B+ 树中插入的最大和最小键数感到困惑。

在我看的视频里说一个节点(根节点除外)最多可以插入的键数最少为m,最多为2m(假设m是顺序)。

根据这 2 个陈述,B+ 树中要插入的键的最小和最大数量是多少,顺序为 1 和顺序为 2?我不确定上面的两个陈述是否冲突,或者我误解了什么。任何想法?

在没有参考视频的情况下,他们似乎使用了术语 order 的 non-standard 定义,这就是造成混淆的原因。

树的的标准定义是最大分支因子,即一个节点可能具有的最大children数。因此,在该定义中,它不是最小值,而是最大值,并且与键[=]的数量无关=48=],但是大约有children.

个数

视频的定义是最大键数总是偶数,而实际上并没有这样的要求。 B+树的最大分支因子很可能是偶数,使得最大键数为奇数。

使用术语 order 的标准定义,我们特别为 B+ 树设置了这些约束:

  • 它的内部节点最多有mchildren。这意味着他们最多有 m - 1 个键。
  • 它的内部节点至少有m/2(向上取整)children,除了根:
  • 如果它的根不是叶子,它可能只有 2 个 children。
  • 其叶子包含实际数据值。

这是一个 4 阶 B+ 树示例(标准定义),它对应于 B+ 树,其中键的数量必须在 1 到 3 之间——这与视频的定义不符:

可以看到,这里一个节点最多可以有4个children,最多3个key。在你的定义中 2m 表示最大键数,顺序实际上是 2m+1。因此,您要求使用 order.

的标准定义来获取 3 阶和 5 阶 B+ 树的示例

这里是阶数 3 的示例——B+ 树的最低可能阶数——这意味着每个节点中的键数必须为 1 或 2: