王道数据结构 (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
 

 

 

 

 

 

 

 
 
 
posted @ 2020-09-09 16:36  1点  阅读(558)  评论(0编辑  收藏  举报