二叉树,红黑树,B Tree,B+Tree详解

在这里插入图片描述
二叉树:二叉树是每个节点最多有2个子树的一种数据结构。
在这里插入图片描述
二叉树的最高层就是根节点,下面又有很多的子节点,25是15的父节点,而15又是25的子节点,其实就是一个相互的关系, 而15和44又是兄弟节点,但是有一点我们需要注意的地方就是叶子节点, 叶子节点则是红框里面的节点,就是没有子节点的我们就称它为叶子节点。

而在二叉树中,我们还要理解一个概念,这个概念就是“树的深度”

树深度:从根节点开始(深度为0)自最高层往下递增,在上面的图中我们可以知道,25的深度是0, 15和44深度是1,10,20,21和27的树深度是2,依次会递增。。
弊端:插入单边增长的数就会退化成链表
在这里插入图片描述
红黑树,本质上也是一棵二叉树,二叉平衡树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。

红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
(6) 当单边节点多于2时会自动平衡,自旋
弊端:数据量越大时,树的高度越大,查找速度慢
在这里插入图片描述
B-Tree

B树(balance tree)和 B+树应用在数据库索引,可以认为是m叉的多路平衡查找树,但是从理论上讲,二叉树查找速度和比较次数都是最小的,为什么不用二叉树呢?
因为我们要考虑磁盘IO的影响,它相对于内存来说是很慢的。数据库索引是存储在磁盘上的,当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘页(对应索引树的节点)。所以我们要减少IO次数,对于树来说,IO次数就是树的高度,而“矮胖”就是b树的特征之一,它的每个节点最多包含m个孩子,m称为b树的阶,m的大小取决于磁盘页的大小。

B-Tree 查找:将节点加载到内存,在内存中依次遍历查找返回元素
在这里插入图片描述
B+Tree

MySQL选择B+Tree的数据结构

MySQL每个节点存储大小为16KB,假设一个索引+指针的大小为14B,如下
在这里插入图片描述
一个节点大约可以存储1170个索引,一个索引+data大约为1KB,
在这里插入图片描述
一个指针指向就可以存储16个索引+data, 假设树的高度是3,每个节点放满索引和data,大约可以存放
1170117016个元素,大于两千万个元素,既提高了性能,也降低了树的高度,树的高度为3就可以存储几千万的数据了
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值