我知道this问题,但问题是关于B-tree和B+-tree。对不起,如果B*-tree
有相似之处,但我找不到。
那么,这两棵树有什么区别?关于B*-trees
的{{3}}非常短。
唯一的区别是"non-root nodes to be at least 2/3 full instead of 1/2"
。但我想还有更多......可能只有一种树 - B-tree
,只是有不同的常量(为了每个非根节点的完整性),没有两种不同的树,如果这是只有差异,对吧?
另外,还有一件事,这让我有了更多的分歧:
"A B*-tree should not be confused with a B+ tree, which is one where the
leaf nodes of the tree are chained together in the form of a linked list"
所以,B+-tree
有一些非常具体的东西 - 链表。 B*-tree
的具体特征是什么,或者没有这种特征?
此外,维基百科的文章中没有任何外部链接/参考。有资源吗?文章,教程,什么?
谢谢!
答案 0 :(得分:13)
<强>被修改强> 除了分钟之外没有区别。填充因子。
Page#489
从上面的书中,
B * - tree 是B树的一种变体,它要求每个内部节点至少有2/3满,而不是至少半满。
Knuth也完全定义了B *树(计算机编程艺术,第3卷)。
“The Ubiquitous B-Tree”在 B * - 树 上有完整的小节。在这里,Comer完全按照Knuth和Corment等人的定义 B * - tree 树。同时也澄清了混淆的来源 - B * - 树 树搜索算法和Knuth设计的一些未命名的B树变体现在称为 B + - 树 。
答案 1 :(得分:1)
也许你应该看看Comer的无处不在的B-Tree(ACM Computing Surveys,1979)。
Comer在那里写了一些关于B * Tree的内容(在B-Tree及其变体部分中)。在该部分中,他还引用了一些关于该主题的论文。这应该可以帮助你自己做进一步的调查:)! (我不是你的研究员;))
但是,我不明白你引用一个部分说明B * Tree在叶子节点级别没有链表的地步。我很确定,这些节点也链接在一起。
关于只有一棵B树。实际上,你有。其他如B + Tree,Prefix B + Tree等只是标准B-Tree的变种。只要看一下Ubiquitous B-Tree这篇论文。