在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 顺序等于节点的子指针的最大数量。)
答案 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顺序和CLRS程度在技术上也计算最小和最大键 - 以及同时计算最小和最大子项。
Knuth的定义允许树(min,max),其中max an是奇数整数,但CLRS的定义忽略了它们。 CLRS的定义中任何形式的树(t,2t-1)都是无效的。例如,具有(min,max)=(5,9)的树通过Knuth的定义是有效的,但是通过CLRS的定义无效。
有趣的旁白:
答案 1 :(得分:0)
我查阅了algorigthms简介中的定义,第3版(CLRS),t可以是任意整数> = 2,这取决于你的需要。我们不计算它,我们只设置t,并确保属性5保持不变。也许你应该尝试阅读所有文字,希望这篇文章可以帮助你〜