This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
为弥补红黑树高度不可控问题,提出多叉搜索树,即为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)