王道数据结构 (37) b 树的插入
核⼼要求:
①对m阶B树——除根节点外,结点关键字个数 ≤n≤m-1
②⼦树0<关键字1<⼦树1<关键字2<⼦树2<….
在插⼊key后,若导致原结点关键字数超过上限,则从中间位置( )将其中的关键字分为两部分,左部分包
含的关键字放在原结点中,右部分包含的关键字放到新结点中,中间位置( )的结点插⼊原结点的⽗结点。
若此时导致其⽗结点的关键字个数也超过了上限,则继续进⾏这种分裂操作,直⾄这个过程传到根结点为⽌,进
⽽导致B树⾼度增1。
实例: 
插入 数据 25  38   60 70  74  75  83   87   90  92   94  99   49  73  88  93   80 
 5阶B树——结点关键字个数 ≤n≤m-1
即:2≤n≤4  所以 一个节点最多插入 5 个元素 
(1)  依次插入 25 38 49 60 这 4 个元素 2≤n≤4  符合条件 
 
(2) 插入元素 80 一共5 个 不符合条件 分裂 (在插⼊key后,若导致原结点关键字数超过上限,则从中间位置( )将其中的关键字分为两部分,左部分包含的关键字放在原结点中,右部分包含的关键字放到新结点中,中间位置( )的结点插⼊原结点的⽗结点)
拆分规则 :
在插⼊key后,若导致原结点关键字数超过上限,则从中间位置( )将其中的关键字分为两部分,左部分包
含的关键字放在原结点中,右部分包含的关键字放到新结点中,中间位置( )的结点插⼊原结点的⽗结点
 
49 为中间点 49 作为父节点 25 38 作为左边部分 60 80 作为右边部分

(3)插入 90 99

(4) 插入 88

这个时候不符合条件 将 右边 部分进行拆分
规则 :
在插⼊key后,若导致原结点关键字数超过上限,则从中间位置( )将其中的关键字分为两部分,左部分包
含的关键字放在原结点中,右部分包含的关键字放到新结点中,中间位置( )的结点插⼊原结点的⽗结点
 
(5) 插入 83 87 刚好符合条件 n 等与4

(6)插入87 不符合条件

将 80 作为 父节点 得到

(7) 插入 93

拆分得到

(8)插入 73 74 75 拆开
得到

(9) 因为父级节点为 5 个 我们要拆分 按照同样规则进行拆分
在插⼊key后,若导致原结点关键字数超过上限,则从中间位置( )将其中的关键字分为两部分,左部分包
含的关键字放在原结点中,右部分包含的关键字放到新结点中,中间位置( )的结点插⼊原结点的⽗结点。
若此时导致其⽗结点的关键字个数也超过了上限,则继续进⾏这种分裂操作,直⾄这个过程传到根结点为⽌,进
⽽导致B树⾼度增1
 
    越努力越幸运

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号