极端情况下,B-树中根以外所有节点只有[m/2]个分支,空间使用率大致仅有50%。而若按照教材8.2节介
为提高空间利用率,可将内部节点的分支数下限从[m/2]提高至[2m/3]。于是,一旦节点v发生上溢且无法通过旋转完成修复,即可将v与其(已经饱和的某一)兄弟合并,再将合并节点等分为三个节点,采用这一策略之后,即得到了B-树的一个变种,称作B'-树(B'-tree)。
当然,实际上不必真地先合二为一,再一分为三。可通过更为快捷的方式,达到同样的效果:从来自原先两个节点及其父节点的共计m+(m-1)+1=2m个关键码中,取出两个上交给父节点,其余2m-2个则尽可能均衡地分摊给三个新节点。
a)按照上述思路,实现B'-树的关键码插入算法;
b)与B-树相比,B'-树的关键码删除算法又有何不同?