B+树插入执行顺序
- 输入参数:
①树根
②插入值
③生成的新叶子节点的引用(若没有则为NULL) - 根据键值查找到需要插入的叶子节点
- 进行判断:
若该叶子节点未满,则插入后退出
若该叶子节点以满,则组织新叶子,然后将新叶子引用赋值为生成叶 - 退出到上一层执行,进行判断
①若生成新叶子且该点孩子数未满,则将新叶子加入自身并退出
②若生成新叶子且该点孩子数已经满,则继续组织新叶子,并将新叶子赋值到新生成的叶子引用上 - 不断递归直到找到未满非叶子节点
- 若整个树已经满,则生成新根
B+树删除执行顺序
- 输入参数:
①树根
②删除值
③补充位引用(若没有则为NULL) - 查找到删除位
- 进行判断:
①若删除后符合B+树条件则退出
②若删除后不满足则从隔壁领养一个孩子节点,隔壁节点也为最小值,则两节点合并为新节点并退出
若此时该层的节点孩子数不满足B+树条件,则标记下预插入位存放到补充位引用上并退出上一层
4.到达上一层后,利用中序遍历递归的模式,查找到下一个子子节点并将补充位填满,若填满后不符合B+树,则按上述规则继续递归直到退出