【大话数据结构C语言】58 多路查找树(B树)之2-3树

举报
CodeAllen 发表于 2021/10/30 00:45:00 2021/10/30
1.4k+ 0 0
【摘要】 欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源 程序员技术交流①群:736386324  程序员技术交流②群:371394777     多路查找树 由于涉及到去内存读取数据的问题,此时内存存取外村次数成为实现效率上的瓶颈,这就迫使要打破每一个结...

欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源
程序员技术交流①群:736386324 
程序员技术交流②群:371394777    

多路查找树

由于涉及到去内存读取数据的问题,此时内存存取外村次数成为实现效率上的瓶颈,这就迫使要打破每一个结点只存储一个元素的限制,为此引入了多路查找树的概念
 
多路查找树,其每一个结点的孩子树可以多于两个,且每一个结点处可以存储多个元素
 
 

2-3树

2-3树其中每一个结点都具有两个孩子(2结点),或者三个孩子(3结点)
一个2结点包含一个元素和两个孩子(或者没有孩子)
一个3结点包含一小一大两个元素和三个孩子(或者没有孩子)
 
 
 

2-3树的插入实现

2-3树插入分为三种情况
1.对于空树,插入一个2结点即可
2.插入结点到一个2结点的叶子上,如下图所示
 
3.要往3结点插入一个新元素
 
 
第一种情况
 
 
另一种情况
 
还有一个例子
 
 
上诉例子可以说明,如果使用2-3树插入的传播效应导致了根结点的拆分,则树的高度就会增加
 
 
 
 
 

2-3树的删除实现

删除也是分为三种情况,但是与插入相反,从3结点开始说起
 
 
 
因此对于删除叶子是2结点的情况,需要分成四种情况处理
1.此结点的双亲也是2结点,且拥有一个3结点的右孩子,如下图所示
删除结点1,只需要左旋,即6成为双亲,4成为6的左孩子,7是6的右孩子
 
 
 
 
 
 
 
 
 
 
 
 
 

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/117048463

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。