Data structures b-树的阶

Data structures b-树的阶,data-structures,tree,b-tree,Data Structures,Tree,B Tree,我在为考试而学习,成绩很好。Wikipedia将B-树描述为一棵树,其中节点至少有d个键,最多有2d个键,因此最多有2d+1个叶子。例如,如果d=1,则它最多有2个键和3个子项,使其成为2-3树。然而,这将不允许例如2-3-4树,除非我错了 然而,我们的材料将b-树描述为一棵树,其中每个节点至少有t>=2个t-1键,最多有2t-1键。这意味着节点的键数为奇数,子节点数为偶数。例如,t=2将具有1到3个键,以及最多4个子项,使其成为2-3-4树。另一方面,不可能有一个2-3树具有这种符号 除此之外

我在为考试而学习,成绩很好。Wikipedia将B-树描述为一棵树,其中节点至少有d个键,最多有2d个键,因此最多有2d+1个叶子。例如,如果d=1,则它最多有2个键和3个子项,使其成为2-3树。然而,这将不允许例如2-3-4树,除非我错了

然而,我们的材料将b-树描述为一棵树,其中每个节点至少有t>=2个t-1键,最多有2t-1键。这意味着节点的键数为奇数,子节点数为偶数。例如,t=2将具有1到3个键,以及最多4个子项,使其成为2-3-4树。另一方面,不可能有一个2-3树具有这种符号

除此之外,还有Knuth表示法,其中d表示节点中的最大子节点数。这种表示法将允许偶数和奇数的子级,同时允许2-3树和2-3-4树

我知道2-3棵树和2-3-4棵树都存在


真正的符号是什么?有真正的符号吗?作为一个额外的问题;大小为h的树中的最大键数是多少?

在google scholar中搜索b树角=>无处不在的b树,角,1979年

这是数据结构论文中引用最多的论文。本文详细描述了b树(它是如何工作的,复杂性和它的变体…)。在那里你应该找到你的答案

我希望这有帮助


p、 如果你使用的公式与所教公式不同,请在考试中引用该论文:p

如果你仔细阅读维基文章,你会发现B-树有两个主要变体(不包括结构变体,如B*和B+),一个带有
t
->
2t
键,还有一个带有
t
->
2t+1

将这些变体转换为#children我们有一个是
t+1
->
2t+1
子代,还有一个是
t+1
->
2t+2
子代

因此,从本质上来说,为了回答您的问题,2-3和2-3-4树都是有效的树,每个树根据不同的变体/定义:

2-3属于第一类(
t+1
->
2t+1
t=1的儿童)

2-3-4属于第二类(
t+1
->
2t+2
t=1的子级)

这两种变体的有效性源于这样一个事实:拆分和合并(从ADT中删除和插入时执行的操作)都是有效的:

t
->
2t

分开。 当添加新元素且节点的键数超过最大键数时发生
2t
因此我们有
2t+1
键,我们将节点分成两个节点,将一个元素推送到父节点,在两个子节点中留下
2t
键,在每个子节点中留下
t
键。这是可以接受的,因为节点中的最小键数确实是
t

合并。 当我们删除一个键,并且一个节点包含的值小于最小值,
t
,并且它的同级也是最小值时发生。因此,我们在新合并的节点中有
t-1+t
键,结果节点必须有效:
t-1+t=2t-1
2t+1

分开。
2t+2
变为
t
t+1
,这是正常的

合并。
t-1+t=2t-1