三十、【进阶】B-Trees的演变过程

1、索引结构

(1)二叉树

(2)B-Tree树

B-Tree树最大度数为5,代表每一个节点最多存储4个key(每个节点最多存储4个数据),5个指针(可以指向5个子节点)。

2、演变过程(最大度数为5)

(1)先插入【1】、【2】、【3】、【4】:

(2)再插入【5】,因为最大度数为5,代表每个节点最多插入4个数据,当插入第五个数据时,中间的数据的就会向上分裂,如下:

(3)插入【6】,先找到根节点,【6】>【3】,所以【6】应存储再【3】的右子树上,【3】右子树的第一个节点已经存储了【4、5】,按照从小到大顺序,将【6】存储进去,最终,【3】右子树的第一个节点为【4、5、6】:

以此类推,存储【7】:

(4)在存储【8】时,因为【3】右子树的第一个节点已经存储了4个key,所以在存储【8】时,【4、5、6、7、8】中间元素会向上分类,形成如下:

(5)依次类推,存储【8、9、10、11、12、13、14、15、16】,如下:

(6)在存储【17】时,因为【17】>【12】,所以被分配向根节点的最右边的子树,根节点最右边的子树变为【13、14、15、16、17】,但因为节点的度数最大为5(最多存储4个key),所以该节点的中间元素【15】将会向上分裂,与上一节点合并在一起,形成【3、6、9、12、15】。但该节点(【3、6、9、12、15】)存储的key又超过了最大值,所以该节点的中间【9】又会向上分裂,形成如下:

相关推荐
试试勇气5 分钟前
算法工具箱之双指针
数据结构
在等晚安么6 分钟前
力扣面试经典150题打卡
java·数据结构·算法·leetcode·面试·贪心算法
Dobby_051 小时前
【Go】C++转Go:数据结构练习(一)排序算法
数据结构·golang
熬了夜的程序员1 小时前
【LeetCode】90. 子集 II
数据结构·算法·leetcode·链表·职场和发展·排序算法
大数据张老师2 小时前
数据结构——内部排序算法的选择和应用
数据结构·算法·排序算法
緈福的街口3 小时前
gps的定位图,在车的位置去寻找周围20x20的区域,怎么确定周围有多少辆车,使用什么数据结构
数据结构·算法
风筝在晴天搁浅4 小时前
代码随想录 701.二叉搜索树中的插入操作
数据结构
星空露珠5 小时前
数独解题算法lua脚本
开发语言·数据结构·算法·游戏·lua
小猪咪piggy5 小时前
【算法】day14 链表
数据结构·算法·链表
yy_xzz5 小时前
【数据结构】队列(Queue)详解——数据结构的“先进先出”
开发语言·数据结构