B*树是B+树的一种变形,它更适合与实际应用中操作系统的文件索引和数据库索引
对于一个m阶B*树:(B+树和B*树唯一的区别即叶子节点有没有指向下一个叶子节点的指针)
除根节点外的内部节点,每个节点最多有m个关键字,最少有⌈m/2⌉个关键字,其中每个关键字对应一个子树
根节点要么没有子树,要么至少有两颗子树
所有叶子节点包含了全部的关键字以及这些关键字指向文件的指针,并且
所有叶子节点的关键字按大小顺序排列
相邻的叶子节点顺序链接(相当于构成了一个顺序链表)
所有叶子节点在同一层
所有分支节点的关键字都是对应子树中关键字的最大值
B+树实例
B*树实例
生成一颗B*(m=3)树:6 10 4 14 5 11 15 3 2
1)插入前三个元素的时候,只需要在根节点中进行插入即可
2)插入14时,需要改变树结构
3)插入5
4)插入11
5)插入15
6)插入3
7)插入2
B+树与B树的不同之处在于,他的所有节点都存在叶子节点中,并且在B数据基础上还会维护一个指针用来指向下一个叶子节点