伪代码描述插入方式:
新值插入叶节点,达到叶节点最大值数,该节点分裂,中间值弹出给父节点,
左半边与右半边分别作为新的节点位于弹到父节点中间值的两侧。对于父亲节点
来说,相当于失去了一个指针,换来了一个值和两个指针。
如果没有父节点的话,中间值作为根节点。
B树最关键的性质,一棵阶数为m的B树,所有非根父节点至少有m/2个儿子。因为这条性质,高度为h的B树,可以存放(m/2)^h个节点。
证明上述伪码描述满足该性质,即:所有非根父节点至少有m/2个儿子。
我们首先要明白,所有父节点,值的个数为k,必有儿子的个数为
k+1。
我们只需要证明
1. 因儿子数过多产生分裂,进而新增的父节点都至少有【m/2】个儿子。
2. 原有的非根父节点的儿子数只会增多不会减少,除非发生分裂