博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B树相关
阅读量:2429 次
发布时间:2019-05-10

本文共 608 字,大约阅读时间需要 2 分钟。

2-3树

2-3树是一颗自平衡的多路查找树,它并不是一颗二叉树,2-3树具有如下性质:

  1. 每个节点有1个或2个key值,对应的子节点为2个子节点或者三个子节点
  2. 所有叶子节点到跟节点的长度保持一致
  3. 每个节点的key从左到右保持了从小到大的顺序,两个key之间的子树中所有的key一定大于它的父节点的左key,小于右节点的key

2-3树的插入:

2-3的插入操作,一定是在叶子节点进行,具体步骤如下:
(1)如果待插入的节点只有一个key,则直接插入即可
在这里插入图片描述
(2)如果待插入的节点有两个key,则对节点进行分裂:2个key加上待插入的key,这3个key分裂成1个key跟两个子节点
在这里插入图片描述
分裂后的2-3树如下:
在这里插入图片描述
就这样一层层往上传递:
在这里插入图片描述
在这里插入图片描述

B树

上面的2-3树其实就是3阶的B树,一颗m阶的B树定义如下:

  • 每个节点最多有m-1个key
  • 根节点至少有1个key
  • 非根节点至少有Math.ceil(m/2)(向上取整)-1个key
  • 每个节点中的key都按照从小到大的顺序排列,每个key的左子树中的所有key都小于它,而右子树中的所有key都大于它
  • 所有叶子节点都位于同一层

B+树

B+树是对B树进行优化,它与B树的区别在于:

  • 有k个子节点必然有k个key
  • 非叶子节点仅具有索引作用,跟记录有关的信息均放在叶子节点中
  • 树的所有叶子节点构成一个有序列表
  • B+树的所有叶子节点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子节点即可

转载地址:http://mqjmb.baihongyu.com/

你可能感兴趣的文章
小程序卡卡卡?用这个方法后,渲染速度提升三倍!
查看>>
二线城市容不下程序员
查看>>
不要成为自己讨厌的那种程序员 | 程序员有话说
查看>>
为什么程序员下班后只关显示器从不关电脑?
查看>>
滴滴裁员 2000 人,具体补偿方案已出
查看>>
余生,做个不焦虑的程序员!
查看>>
世界排名第 3 的滴滴裁员,开春求职必知的独角兽排行榜
查看>>
Spring Boot 中的响应式编程和 WebFlux 入门
查看>>
阿里终结裁员危机!坚决不拿 10 万阿里人祭天!
查看>>
如何从零开始两天撸一个微信小程序?!(内含源码)
查看>>
女神?御姐?文艺?这样的程序媛你绝没见过! | 程序员有话说
查看>>
“软件外包城”下的马鞍山 | 程序员有话说
查看>>
那些上相亲网站的程序员,后来怎么样了?
查看>>
程序员如何实现财富自由?
查看>>
你我的父母,都在被互联网“割韭菜”
查看>>
程序员下班后都忙些啥?| 程序员有话说
查看>>
网易不再从容
查看>>
万万没想到你们竟是这样的程序员 | 程序员有话说
查看>>
Java 帝国对 Python 的渗透能成功吗?
查看>>
从培训机构出来的程序员,后来都怎么样了? | 程序员有话说
查看>>