在计算机科学中,B树(又叫B-tree,没有B减树这一说,‘-’是破折号)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。——来自百度百科
多叉树主要分为B树,B+树和B*树
B树
最经典的B树
可以看到B树是有顺序的,即22的左侧为小于22的,右侧为大于22的,
而在5,11子节点中,左侧是小于5的,中间是大于5但是小于11的,右侧是大于11的
---------------------------------------------------------------------------------------------------------------------------------
B树有以下几个要求
M为阶数
1,每个结点最多有m-1个关键字。
2,根结点最少可以只有1个关键字。
3,非根结点至少有Math.ceil(m/2)-1个关键字。(Math.ceil是向上取整)
4,每个结点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
5,所有叶子结点都位于同一层,或者说根结点到每个叶子结点的长度都相同。
---------------------------------------------------------------------------------------------------------------------------------
B+树
B 树和B+树的主要区别是:B树的节点里包括(next指针,key-value键值对(或者直接用date存储数据)),总之B树的每个节点都存储了数据
而B+树的节点包括 (next指针,key值),只有叶子节点是(next指针,key-value键值对)的形式
且叶子节点是一种双向链表的形式,B+树的分支节点是用来选择的,省略了date的空间
这张图可以看出主要的区别
B+树也是目前数据库中常用的一种数据结构