前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >B树-数据结构

B树-数据结构

作者头像
冬天vs不冷
发布2025-01-20 21:44:06
发布2025-01-20 21:44:06
850
举报
文章被收录于专栏:springboot

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的基础上,增加一个相邻叶子节点的链表指针,提高区间查询的性能

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、BTree结构
    • 插入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结构
  • 3、MySQL中B+Tree结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档