Data structures b-树的阶
我在为考试而学习,成绩很好。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棵树都存在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树具有这种符号 除此之外
真正的符号是什么?有真正的符号吗?作为一个额外的问题;大小为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-12t+1
:
分开。
2t+2
变为t
和t+1
,这是正常的
合并。
t-1+t=2t-1