CLRS B-Tree属性节点的键数下限和上限可以包含

时间:2017-08-22 05:46:43

标签: algorithm tree b-tree

在CLRS算法简介中:B-Tree definition给出属性声明:

  

5.节点可以包含的键数有下限和上限。这些界限可以用固定整数t> =表示   2称为B树的最小程度:

     

一个。除root之外的每个节点必须至少有t-1个密钥。   因此,除根之外的每个内部节点至少有t个子节点。   如果树是非空的,则根必须至少有一个密钥。

     

湾每个节点最多可包含2t - 1个密钥。因此,一个内部   节点最多可以有2个孩子。我们说节点已满,如果它   恰好包含2t - 1个键。

它说

t

是最低学位。

我的问题是计算什么,子节点指针或键数。以及财产5.b如何保持

我已经浏览了维基百科对 B-Tree 2-Tree 2-3-4 Tree 的定义,但却发现没有给出了树的顺序的特定定义(根据 Knuth 顺序等于节点的子指针的最大数量。)

2 个答案:

答案 0 :(得分:2)

你似乎对Knuth命令和CLRS学位之间的区别感到困惑,所以请允许我解释一下。 Knuth order CLRS degree 都会测量: min< = children< = max ,最小和最大子项,( min max ),允许树中的每个内部节点拥有。两个定义都同意 min 不能 max / 2

Knuth Order, k |  (min,max)  | CLRS Degree, t
---------------|-------------|---------------
     0         |      -      |        –
     1         |      –      |        –
     2         |      –      |        –
     3         |    (2,3)    |        –
     4         |    (2,4)    |      t = 2
     5         |    (3,5)    |        –
     6         |    (3,6)    |      t = 3
     7         |    (4,7)    |        –
     8         |    (4,8)    |      t = 4
     9         |    (5,9)    |        –
     10        |    (5,10)   |      t = 5

主要相似点/不同点:

  • Knuth顺序k是计算最大子项数的索引。 Kn的k次序意味着每个节点必须具有max = k和min = ceil(k / 2)。例如,(3,6)是Knuth order 6的B树。
  • CLRS学位t是计算最小子女数的指数。 CLRS度t表示每个节点必须具有min = t和max = 2t。例如,(3,6)是CLRS度3的B树
  • 在两个定义中,min = ceil(max / 2)和max = 2 * min。
  • 在两个定义中,键的数量等于子项数减去一个的情况。因此,Knuth顺序和CLRS程度在技术上也计算最小和最大 - 以及同时计算最小和最大子项

  • Knuth的定义允许树(min,max),其中max an是奇数整数,但CLRS的定义忽略了它们。 CLRS的定义中任何形式的树(t,2t-1)都是无效的。例如,具有(min,max)=(5,9)的树通过Knuth的定义是有效的,但是通过CLRS的定义无效。

有趣的旁白:

  • 这两个定义都包括2-3-4 trees,它们是具有(min,max)=(2,4)的树。它是一个B树,其中Knuth顺序为k = 4,它是一个CLRS B树,其度为t = 2.这些树与Red-Black Trees密切相关。
  • 只有Knuth的定义包括2-3 trees,其中(min,max)=(2,3)。 2-3树是具有Knuth顺序k = 3的Knuth B树。它不是有效的CLRS B树。遗憾的是,CLRS不包含此树,因为它们与AA trees密切相关。

答案 1 :(得分:0)

我查阅了algorigthms简介中的定义,第3版(CLRS),t可以是任意整数> = 2,这取决于你的需要。我们不计算它,我们只设置t,并确保属性5保持不变。也许你应该尝试阅读所有文字,希望这篇文章可以帮助你〜