目录
1. 数据结构树–>树基础
2. 数据结构树–>二叉树
3. 数据结构树–>二叉查找树\二叉排序树
4. 数据结构树–>平衡二叉树
5. 数据结构树–>霍夫曼树
6. 数据结构树–>红黑树
7. 数据结构树–>二叉堆
8. 数据结构树–>B树
9. 数据结构树–>B+树
B+树
1. 特性
- 数据个数比孩子节点个数少1.
- B+树包含两种节点,索引节点和叶子节点,所有数据都保存在叶子节点中,索引节点只保存索引,根节点可以是索引可以是叶子节点。
- m阶B+树节点最多有 m-1个索引或数据。
- 节点索引或数据都从小到大排列,内部索引后数据大于左子树,小于或等于右子树。
- 每个叶子节点都右相邻叶子节点的指针。
2. B+树的插入
B+树的插入和B树的插入类似,都是节点的分裂和数据的上移,只是分裂后中间数据变为了右子树的起始数据,上移的数据为中间数据的索引。
eg: 5阶B+树插入 5.、8 、10、15、16
插入根节点构成
节点到达5阶限制,节点分裂,索引上移,
- 以中间数据10为分割点,形成新的节点5、8和 10、15、16.
- 中间数据10的索引上移,构成父节点。
构建后的B+树
3. B+树的删除
B+树的删除也与B树的删除类似,只是父节点只是索引节点不保存数据,索引当我们安装B树的规律删除节点后,还需要将上移的父节点下移到需要的节点。
eg: 原 B+ 树
3.1 删除22
没有破坏B+树的特性,直接删除
3.2 删除15
删除15后,节点数据个数为1,破坏了B+树特性:节点数据少于 m/2 ,
因为父节点只是保存的索引,所以这里只能从兄弟节点借一个数据或者与兄弟节点合并,这个逻辑与B树相同,
需要的操作是:兄弟节点最大值索引上移,代替索引10, 小弟节点数据最大值9,下移到该节点。
最终:
3.3 删除数据7
数据7删除后,节点不符合B+树特性,兄弟节点只有2个,所以节点与兄弟节点合并形成新的节点,索引7也将消除,新节点父节点指向索引9