前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

B-+树

作者头像
晚上没宵夜
发布2020-03-10 10:49:15
3020
发布2020-03-10 10:49:15
举报
文章被收录于专栏:Howl同学的学习笔记

B-树

B树是二叉平衡树的升级版,可以多路自平衡,而且属于外查找,即数据是放在外存之中的,这时候就要考虑 IO 操作优化了,相比二叉查找树他们的时间复杂度都是O(log N),优势在于B树的深度相比小很多,在数据很大的情况下从磁盘读取次数小了,加快了查找速度,所以B树及其同类经常用在文件系统或数据库中,下面先来说一下B树

  • B树的节点中含有孩子的最大值称为该树的阶,通常用m表示,(m >= 2)
  • 若根节点不是叶子结点,则根节点最少有两颗子树
  • 树中每个中间结点都包含k-1个元素和k个孩子,ceil(m/2) <= k <= m
  • 树中叶子节点都包含k-1个元素,ceil(m/2) <= k <= m
  • 所有的叶子结点都位于同一层

B+树

B+树又是B-树的升级版,一颗m阶的B+树,在B-树的前提下又有下面的区别:

  • 根节点的最大元素是整棵树的最大元素
  • 中间节点有多少个孩子,就有多少个元素(元素不保存数据了,只用于索引,所有数据都存在叶子节点中)
  • 所有中间结点的元素都同时存在于子节点上,且在子节点元素中是最大(最小)元素
  • 所有叶子节点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子节点按照关键字组成链表

二者区别

  • B+树中只有叶子节点才有指向数据记录的存储地址,B-树的节点则都有
  • B+树因为中间元素没有数据记录的存储地址,同样的磁盘页可以存储更多节点元素(即同样元素,B+树更矮,IO次数更少)
  • B+树单查询必须查到叶子节点,因为叶子才有数据记录的存储地址,而B-树则查到就返回,不稳定
  • B+树范围查询只需在叶子节点遍历链表即可,而B-树需要中序遍历才能确定范围
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • B-树
  • B+树
  • 二者区别
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档