B树-数据结构

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 B树-数据结构,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、BTree结构

BTree又叫多路平衡搜索树,一颗m叉树的BTree特性如下:

  • 树中每个节点多个包含m个子节点
  • 若根节点不是叶子节点,则至少有两个子节点
  • 除根节点合叶子节点外,每个节点至少有[ceil(m/2)]个子节点
  • 所有的叶子节点都在同一层
  • 每个非叶子节点由n可key和n+1个指针组成,其中[ceil(m/2)-1]<= n <= m-1

以5叉Btree为例,key的数量:公式推导[ceil(m/2)-1]<= n <= m-1。
2 <= n <= 4。当n>4时,中间节点分裂到父节点,两边节点分裂。

插入3、14、7、1、8、5、11、17、13、6、23、12、20、26、4、16、18、24、25、19数据为例

在这里插入图片描述

1)插入前四个数字 3、14、10、1

在这里插入图片描述

2)插入8,n>4,中间元素7向上分裂到新的节点

在这里插入图片描述

3)插入5、11、17不需要分裂

在这里插入图片描述

4)插入13,中间元素13向上分裂到父节点7

在这里插入图片描述

5)插入6、23、12、20不需要分裂

在这里插入图片描述

6)插入26,中间元素20向上分裂到父节点中

在这里插入图片描述

7)插入4,中间元素4向上分裂到父节点中,然后插入16、18、24、25不需要分裂

在这里插入图片描述

8)最后插入19,第三个子节点n>5中间节点17向上分裂,但分裂后父节点n>5中间节点13向上分裂

在这里插入图片描述

2、B+Tree结构

B+Tree为BTree的变种,B+Tree与BTree的区别为:

  • B+Tree最多含有n个key,BTree最多含有n-1个key
  • B+Tree的叶子节点保存所有的key信息,根据key大小排序排列
  • 所有的非叶子节点都可以看作是key的索引部分

在这里插入图片描述
由于B+Tree只有叶子节点保存key信息,查询任何key都要从根节点走到叶子节点,所有B+Tree查询效率更加稳定

3、MySQL中B+Tree结构

MySql索引数据结构对B+Tree进行了优化。在原B+Tree的基础上,增加一个相邻叶子节点的链表指针,提高区间查询的性能
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148666.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!