为弥补红黑树高度不可控问题,提出多叉搜索树,即为B-树 B树满足一下条件: 1. 树中每个节点至多有M个孩子节点(即至多有m-1个关键字) 2. 除根节点外,其他节点至少有m/2个孩子节点 3. 若根节点不是叶子节点,则根节点至少有2个孩子节点 4. 所有叶子节点都在同一层上,即B树是所有结点的平衡因子均等于0的多路查找树。 如下图所示一颗3阶b树: ![[微信截图_20221216171144.png]] 每个节点都会存储key、data、指针(如图5阶B树) ![[1446087-bc023e47bc74cfa1.webp]] ## B-tree的插入: 与BST相同,比较大小后判断放在左还是右 ## B-tree的删除: 需要先判断节点是否富有,富有:删除一个key,剩余key的数量大于等于(m/2)向上取整-1。 节点如果不富有需要从兄弟、父亲节点借。如果都不富有,只能降低树的高度。具体过程参考B站:站长数据结构 B-tree模拟 [B-Tree Visualization (usfca.edu)](https://www.cs.usfca.edu/~galles/visualization/BTree.html)