1.B树结构同时满足以下特性
- 每个节点最多包含n个孩子,即n叉树;
- 除了根节点和叶子节点外,每个节点至少有ceil(n/2)个孩子(ceil是向上取整);
- 若根节点不是叶子节点,则至少有两个孩子;
- 所有叶子节点在同一层;
- ☆☆☆每个非叶子节点由m个key和m+1个指针组成,其中(ceil(n/2)-1)<=m<=n-1;
【B树的非叶子节点示意图】
- key是存储的值,保存的是数据表某一列的内容
- p是指针,指向当前节点的孩子
- 一个非叶子节点中包括m个key和m+1个指针
【伪代码示例】
// 下面是一段伪代码,目的是为了让读者从代码角度更好理解一下B树节点的结构,请不要在意语法是否正确
struct BTreeNode{int n; // 代表这是n叉树int key[m]; // 代表当前类型中key有m个,其中(ceil(n/2)-1)<=m<=n-1BTreeNode *p[m+1]; // 代表当前节点由m+1个指针,指向其孩子节点,允许为空}
2.图示构建过程
【☆☆☆B树构建原则】
- 当节点中的key的个数不超过n-1时,按照大小顺序排列插入;
- 当key的个数大于n-1时,中间key向上分裂到父节点中,两边key分裂成两个节点
以3叉树为例,插入[1,3,2,5,4,6,7]
step1.计算key的个数
(ceil(n/2)-1)<=key<=n-1
3叉树,所以1<=key<=2