B树和B+树的区别
Posted 我是坑货
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B树和B+树的区别相关的知识,希望对你有一定的参考价值。
首先来介绍一个工具或者是网站(当然是你能打开的情况下),如果对一个数据结构感觉有点问题,可以看看这个网站的演示,不管是插入还删除之类的这些可能在代码上看起来有点难懂的,经过动态演示,会有一个不同的理解。
找你想看的一个数据结构,点进去,比如说我选择了B TreesB树点进去,效果如下:
你自己可以添加元素,删除元素,修改元素去观察数据结构了。
B+树和B树相比的主要区别:
1,就是B+树所有关键码都在叶子节点
2,B+树的叶子节点是带有指针的,且叶节点本身按关键码从小到大顺序连接
3,在搜索过程中,如果查询和内部节点的关键字一致,那么搜索过程不停止,而是继续向下搜索这个分支
对照同样5个元素的排序就知道了
B树
B+树
可以看出来B+树文件系统,数据库系统当中,更有优势,更高效。
B+树更有利于对数据库的扫描 ,因为所有元素都在叶子节点上。
B+树的查询效率更加稳定 ,所谓的稳定就是B树最后就是要找到叶子节点,就是不管你找谁都有从头走到尾,不会出现那个特别长,那个特别短。(这个可以在我推荐的这个工具演示一下寻找某个元素的过程)
B+树没有像B树一样,把一些关键码每层都放一部分,之间存在互相之间的关系,指针。在考虑指针指向内容上,B树没有这些要存,反而数据量大的情况的,占的空间要比B树小。
最后补一下B树,B+树的概念:
一棵m阶B树是一棵平衡的m路搜索树,它或者是空树,或者是满足下列性质的树:
- 树中每个结点至多有m棵子树。(即至多含有m-1个关键字,两颗子树指针夹着一个关键字);
- 若根结点不是终端结点,则至少有两颗子树。(至少一个关键字);
- 除根结点外的所有非叶子结点至少有[m/2]棵子树。(即至少含有[m/2]-1个关键字);
- 所有的叶子结点出现在同一个层次上,不带信息。(就像是折半查找判断树中查找失败的结点)。
- 每一个结点中的关键字满足从左到右依次增大的规则。
B+树是B树上的一个修改或者改版:
- n棵子tree的节点包含n个关键字,不用来保存数据而是保存数据的索引。
- 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
- 所有的非终端结点可以看成是索引部分,结点中仅含其子树中的大(或小)关键字。
- B+树中,数据对象的插入和删除仅在叶节点上进行。
- B+树有2个头指针,一个是树的根节点,一个是小关键码的叶节点。
B树和2-3-4树的区别
【中文标题】B树和2-3-4树的区别【英文标题】:Difference between B-Trees and 2-3-4 Trees 【发布时间】:2011-02-04 04:17:58 【问题描述】:B-Trees 和 2-3-4 Trees 有什么区别?
另外,你如何找到每个的最大和最小高度?
【问题讨论】:
我只能添加一个***的链接:en.wikipedia.org/wiki/2-3-4_tree 不是作业,个人修改。 【参考方案1】:...Wikipedia 的链接和引用:
“2-3-4 树是 4 阶的 B-树。”
2-3-4
是一个 B-tree
。
它被称为 2-3-4 树,因为非叶非根节点的子节点数为 2,3 或 4。
如果是 6,则可以称为 3-4-5-6 树,或简称为 3-6 树。
由于最小子节点数是最大子节点数的一半,因此通常可以跳过前者并讨论顺序为 m 的 B-tree。
B 树的顺序定义为一个节点可以拥有的最大子节点数。
如我们所见,在 2-3-4 树中,最大值为 4。
general formula for B-trees 给出了最坏和最好的高度。
最佳情况:logmn。 (所有节点都已满)最坏情况:logm/2n。 (所有节点都是半空的)
在哪里
m 是树的顺序 - 一个节点可以拥有的最大子节点数,在本例中为 4 - 和 n 是树中的条目数“B 树可以有任意数量的顺序” - 是的,但是对于 B 树的特定子类,您需要提前确定该数量。这就像谈论一般的蝴蝶与谈论Monarch butterfly。 B树是一类数据结构,就像蝴蝶是一类昆虫一样。 Monarch butterflies 是蝴蝶的子类,就像 2-3-4 树是 B 树的子类一样。
【讨论】:
【参考方案2】:b-tree之所以存在的主要区别是插入时所需的节点分裂数量少于2-4棵树。在 2-4 树中我们有时会发现一个称为级联分裂的术语,但在 b-tree 中不存在级联分裂。
【讨论】:
您可以在 B 树中进行级联拆分:en.wikipedia.org/wiki/B_Tree#Insertion以上是关于B树和B+树的区别的主要内容,如果未能解决你的问题,请参考以下文章