一、简介
B+树是常用于数据库和操作系统的文件系统中的一种用于查找的数据结构.B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。
二、定义
B+树是B树的一种变形形式,B+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。一棵m阶的B+树定义如下:
- 每个结点至多有m个子结点;
- 除根结点外,每个结点至少有[m/2]个子结点,根结点至少有2个子结点;
- 有k个子结点的结点必有k个关键字。
B+树的查找与B树不同,当索引部分某个结点的关键字与所查的关键字相等时,并不停止查找,应继续沿着这个关键字的指针向下,一直查到该关键字所在的叶子结点为止。
三、与B树的比较
1.结点结构
叶子结点:
B树结点的是“null”结点,不存储任何数据。
B+树结点的是“数据节点”,专门用来存储数据。
非叶子结点:
B树结点的是“指针包着key”的结构(每个key的左右两边均有指针)
B+树结点的是“指针驮着key”的结构(每个key都骑在指针的头上)
2.数据的存储
B树的数据存储在非叶结点上,而叶子结点是不存储数据的。
B+树的数据存储在叶子结点上,而叶非叶子结点是不存储数据的。
绿色部分表示存储数据,灰色部分表示不存储数据,
3.叶子结点之间的关系
B树:叶子结点之间没有关系。
B+树:所有叶子结点构成一条链表,每个节点就是该链表中的一个节点。
4.结点的插入与删除
这里有一个详细的教程:http://data.biancheng.net/view/61.html