B树系列文章(2)--插入操作

本文详细介绍了B树的插入操作过程,包括简单的插入操作及涉及节点分裂的复杂插入操作。通过具体的实例,展示了如何确定新记录的插入位置,以及当节点满时如何进行分裂,并更新索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
3.B树上的插入操作

 为了便于问题的描述,现重新构造一个只有两层的B树。见图2。

  简单插入操作: 
   参考图2,先考虑一个简单的操作,向该B树插入一条索引键值为9的记录。执行流行如下:

     1)执行索引键值=9的查找操作,确定该新记录应该插入到叶子节点L1中。
     2)此时发现叶子节点L1中还是有空闲记录空间的,因此可以确定该新记录可以插入L1中而不会导致分裂。
     3)将记录10、16向后移动移动一个位置,插入索引键值为9的新记录。插入之后,8、9、10、16还是顺序的。
   经过此插入操作之后,新的B树见图3。

     

 

   复杂插入操作:
  参加图3,现在继续插入索引键值为13的记录。执行流程如下:
   1)执行索引键值=13的查找操作,确定该新记录应该插入到叶子节点L1中。
   2)此时发现叶子节点L1中已经没有足够的空间来容纳新的记录,此时需要进行分裂节点的操作。

   3)分配一个新的叶子节点页L3,将满页L1中的后一半数据移入L3中。重新设置叶子节点的左右兄弟指针。参见图4。

 

 

 

 

 4)叶子节点L3虽然生成了,但是上层索引节点用还没有相应的指针指向它。因此需要在索引节点I1增加一个索引项:索引键值为10、指针指向叶子节点L3。如果I1的空间不够,还会导致I1节点的分裂,当然此处未发生这种情况。参加图5
 
 
 
 5)将索引键值=13的新记录插入到L3中,执行结束。见图6
 
 

 

 

 

      
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值