2-3-4树(转红黑树),B-树,B+树分析

红黑树、B树、B+树各自适用的场景 1. 磁盘基础知识 分页: 现代操作系统都使用虚拟内存来印射到物理内存,内存大小有限且价格昂贵,所以数据的持久化是在磁盘上。虚拟内存、物理内存、磁盘都使用页作为内存读取的最小单位。一般一页为4KB(8个扇区,每个扇区125B,8*125B=4KB)。 局部性原理: 当一个数据被用到时,其附近的数据也通常会马上被使用。 程序运行期间所需要的数据通常比较集中。 磁盘预读原理: 磁盘读取... 阅读详情

2-3-4树(转红黑树),B-树,B+树分析

参考资料

漫画讲解B树
https://blog.youkuaiyun.com/zwz2011303359/article/details/63262541

前言

首先大家一定要知道没有B减树,那是B-树中间的是连字符。不要读错哦
其次就是2-3-4树是4阶的B-树。
再其次就是2-3-4树可以向红黑树转换。
举个例子:


带着问题学习

通过上面的分析,我们需要了解B-树和B+树就可以啦。带着问题学习是最高效的。
问题:
Mysql里面的索引基于什么样的数据结构?
答案:
主要基于hash表或者B+树
问题:
数据库索引为什么没有使用二叉查找树来实现?
答案:
二叉查找树的查找速度和比较次数都是最小的,但是我们需要考虑一个现实问题,磁盘IO。数据库索引是存储在磁盘上的,当数据量比较大的时候,索引的大小可能有好几个G甚至更多,当我们利用索引查询的时候,能把整个索引全部加载到内存么?显然是不可能的。能做的只有逐一加载每一个磁盘页,这里的磁盘页对于着索引树的节点。

B-树

如果利用二叉树作为索引结构,情形是什么样呢?假设树的高度是4,磁盘IO次数等于索引树的高度。就因为这样,为零减少磁盘IO次数,我们就需要把原本瘦高的树结构,变的矮胖一点。这就是B-树的特征之一。
B-树在查询中的比较次数其实不比二叉查找树少,尤其当单一节点中的元素数量很多时。可是相比磁盘IO的速度,聂村中的比较耗时几乎可以忽略。所以只要树的高度足够低,IO次数足够少,就可以提升查找性能。相比之下节点内部元素多一些也没有关系,仅仅是多了几次内存交互,只要不超过磁盘页的大小即可。这就是B-树的优势之一

B-树主要应用于文案系统以及部分数据库索引,比如中美的菲关系数据库MongoDB。而大部分关系型数据库,比如Mysql则使用B+树作为索引。

以上是我自己整理的笔记,如果觉得有点糊涂,可以看文章开头的链接,漫画更加让人印象深刻。相信你读完了心中就会有点B树啦,哈哈哈

B+树

B+树



特点:

  1. 每一个父节点的元素都出现在子节点中,是子节点的最大(或最小)元素。
  2. 根结点的最大元素(这里是15)也就等同于整个B+树的最大元素。以后无论插入删除多少元素,始终要保持最大元素在根结点当中。
  3. 至于叶子节点,由于父节点的元素都出现在子节点,因此所有叶子节点包含了全量元素信息。并且每个叶子节点都有指向下一个节点的指针,形成量一个有序链表。
  4. 在索引之外,确是至关重要的特点。那就是卫星数据的位置。所谓卫星数据,值得是索引元素所指向的数据记录,比如数据库中的某一行,在B-树中,无论中间节点还是椰子节点都带有卫星数据。(卫星数据指的是一条纪录中除了关键字key以外的其他数据。因为一个纪录可能包含多个数据项,但是一般排序之类的算法只关心key,其他的项都是跟着key走,就像是卫星一样?!这些数据就称作卫星数据。)


B+树的好处主要体现在查询性能上:

  1. 单行查询:在单元素查询的时候,B+树会自顶向下逐层查找节点,最终找到匹配的叶子节点。如查找3。


    与B-树看起来差不多,其实有两点不同:
    (1)B+树中看节点没有卫星数据,所以同样大小的磁盘页可以容纳更多的节点元素。这就意味着,数据量相同的情况下,B+树的结构比B-树更加“矮胖”,因此查询时IO次数也更少。
    (2)B+树的查询必须最终查找到叶子节点,而B-树只要找到匹配元素即可,无论匹配元素处于中间节点还是叶子节点。因此B-树的查找性能并不稳定。而B+树的每次查找都是稳定的。(尽管每次都要查找到叶子节点,但是B+树矮胖,所以IO次数比B-树查找到叶子要少。)
  2. 范围查找:B-树在进行范围查找的时候,只能依靠繁琐的中序遍历(先左,然后根,再右)。如查找3-11.



    B+树的范围查找则简单得多,只需要在链表上左遍历即可:


拓展–B*树

内有B*树讲解
总的来说B*树是B+树的变体。在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;

总结

查找:平衡2-3-4树、AVL树(平衡二叉树)、(左倾)红黑树 1. 平衡2-3-4树 一棵2-3-4树是这样一棵树:它或者为空,或者是由以下三类节点组成的树:2-节点,有1个关键字和由关键字划分的2个区间链接;3-节点,有2个关键字和由关键字划分的3个区间链接;4-节点,有3个关键字和4个区间链接。 一棵平衡2-3-4树是一棵2-3-4搜索树,其中所有指向空树的链接到树根的距离都相同。 插入操作在平衡2-3-4树中,每次进行插入仍然能在树中保持完美的 阅读详情

相关推荐

避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题

本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。

weixin_42549496的博客 287

数据结构(十六) -- 树(八) --2-3-4树

前言 通过前面的介绍,我们知道在二叉树中,每个节点只有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。本篇博客我们将介绍的——2-3-4树,它是一种多叉树,它的每个节点最多有四个子节点和三个数据项。 同时它也是一个平衡查找树,效率比红黑树稍差。 定义 简介 2-3-4树每个节点最多有四个子节点和三个数据项,名字中 2,3,4 的数字含义是指一个节点可能含有的子节点的个数。对于非叶节点有三种可能的情况: 有一个数据项的节点总是有两个子节点; 有二个数据项的节点总是

weixin_39724194的博客 1753

MATLAB小白也能搞定!BCT脑网络分析工具箱安装与入门指南

本文为零基础用户提供了一份详尽的BCT脑网络分析工具箱安装与入门指南。从MATLAB环境配置、BCT工具箱下载与路径添加,到连接矩阵构建、节点度与聚类系数等基础指标计算,手把手带领神经科学研究者跨越编程门槛,快速掌握脑影像数据分析的核心流程。

threejs5artist的博客 1089

数据结构与算法系列第四篇——树(2-3-4树)

引言 2-3-4树 名字的含义 二叉树和2-3-4树的联系 相同之处 不同之处 2-3-4树的组织形式 查找 插入 节点分裂(4-节点变成两个2-节点) 根的分裂(4-节点变成3个2-节点) 在下行路途中分裂 案例演示插入 Java实现234树 运行结果如下: 2-3-4树和红黑树 2-3-4树和红黑树操作的等价性 4-节点分裂和颜色变换 3-节点分裂和旋转 2-3-4树的效率 2-3树 节点分裂 外部存储 访问外部数据 一次访问一个数据块

yemuxiaweiliang的博客 1541

周立功CAN盒二次开发实录:用QT5.1.0解析汽车CAN报文(附数据可视化技巧)

本文详细介绍了基于QT5.1.0和周立功USBCAN-E-U设备进行汽车CAN总线二次开发的实战过程。核心内容包括利用CANdb++数据库解析原始报文并转换为物理值,以及通过QCustomPlot库实现高性能实时数据可视化,为车载诊断与车联网开发提供了一套完整的工程实践方案。

sugar的博客 1057

腾讯滑块验证码collect参数逆向与JSVMP对抗实战

本文深入解析腾讯滑块验证码collect参数的逆向过程与JSVMP虚拟机对抗技术。通过详细的环境搭建、抓包分析和JSVMP逆向技巧,揭示collect参数的生成逻辑与加密流程,并提供完整的模拟实现方案和常见问题排查方法,助力开发者突破腾讯天御验证码的防护机制。

weixin_29009501的博客 1573

数据结构与算法——2-3-4树

1)引言 在前几篇文章中介绍了 2-3 树的定义以及插入删除操作。本篇文章将在 2-3 树的基础上更进一步,介绍比 2-3 树更为复杂的数据结构 2-3-4树 。之所以介...

程序员吴师兄的博客 765

YOLOv8的Anchor-Free革新:从中心点预测到动态IoU匹配的全面解析

本文深入解析了YOLOv8采用Anchor-Free(无锚框)设计的核心优势与实现机制。通过摒弃预设锚框,模型直接预测目标中心点与宽高,结合解耦头、动态IoU匹配及Varifocal Loss等创新,显著简化了训练流程并提升了检测精度,尤其在小目标检测和模型泛化能力上表现突出。

weixin_29094301的博客 356

简单了解之2-3-4树

2-3-4树

m0_51999974的博客 909

Multisim 14.0实战:从零搭建可调幅多波形信号发生器(附仿真文件)

本文详细介绍了如何在Multisim 14.0中从零搭建一个可调幅多波形信号发生器,涵盖方波、三角波和正弦波的生成原理与实现步骤。通过核心电路架构解析、关键参数设计及Multisim实战操作,帮助电子工程学习者和硬件工程师掌握信号发生器的设计与调试技巧,并提供仿真文件供实践验证。

nokia的博客 1073

Redis下载安装与配置(windows)

一、Redis下载 二、Redis安装 三、启动Redis临时服务并测试连接(可跳过) 四、Redis配置

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 7万+

2-3-4树【数据结构与算法java】

2-3-4树【数据结构与算法java】

小心星的博客 737

利用CAT12做皮层指标的统计分析及可视化笔记记录

利用CAT12做皮层指标的统计分析及可视化 文章目录利用CAT12做皮层指标的统计分析及可视化前言一、统计步骤1.Basic Models2.Estimate Surface Models3.Results二、可视化1.t值可视化2.p值可视化 前言 本来没有打算做SBM的,因为自己是新手小白,许多操作都不太懂,但最后还是打算做一下,于是就从上周末开始将很久之前跑VBM得到的surf文件夹中的数据捡起来继续做皮层分析,因为之前看了一个博主的博客,关于如何做SBM已经讲得非常清楚了,但是在统计及可视化这里,我

weixin_52073820的博客 8094

二叉排序树、平衡二叉树、红黑树、B树、B+树

全民制作人们,大家好。我是练习时长两天半的个人练习册,喜欢B树,B+树,BST树, AVL树,来redblack~

24考研人晴落的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

终于搞懂了什么是二叉查找树,AVL树,B树,B+树,红黑树

二叉查找树: 二叉查找树就是左结点小于根节点,右结点大于根节点的一种排序树,也叫二叉搜索树。也叫BST,英文Binary Sort Tree。 二叉查找树比普通树查找更快,查找、插入、删除的时间复杂度为O(logN)。但是二叉查找树有一种极端的情况,就是会变成一种线性链表似的结构。此时时间复杂度就变味了O(N),为了解决这种情况,出现了二叉平衡树。   平衡二叉树: 平衡二叉树全称平衡二...

wanderlustLee的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

特殊树(2-3-4树、红黑树、B类树、B+树、哈夫曼树)

认识2-3-4树2节点:包含一个键(对应的数据) 两个链(两个叉) 左子树的值都不大于该节点 右子树的值都不小于该节点3节点:包含两个键(对应的数据) 三个链(三个叉) 左子树的值都不大于该节点 中子树的值位于两个节点值之间 右子树的值都不小于该节点4节点:包含三个键(对应的数据) 四个链(四个叉) 左子树的值都不大于该节点 左中子树的值位于前两个节点值之间 右中子树的值位于后两个节点值之间 右子树的值都不小于该节点。

xxxmine的博客 1617

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

掌握了2-3-4树也就掌握了红黑树,不信进来看看,建议收藏!

  红黑树的本质是2-3-4树,所以我们先掌握了2-3-4树,那么红黑树就非常容易了。本文重点来介绍2-3-4树。 2-3-4树 1 概念介绍   2-3-4树是四阶的 B树(Balance Tree),他属于一种多路查找树,它的结构有以下限制:   所有叶子节点都拥有相同的深度。   节点只能是 2-节点、3-节点、4-节点之一。 2-节点:包含 1 个元素的节点,有 2 个子节点; 3-节点:包含 2 个元素的节点,有 3 个子节点; 4-节点:包含 3 个元素的节点,有 4 个子节点; 所有节点

波波烤鸭的博客 5588

红黑树、B树和B+树

红黑树(Red Black Tree,RBT) 红黑树是一种自平衡二叉搜索树,通过在插入和删除时调整二叉树结构,保持二叉树深度平衡,提高查找效率。红黑树的五点特性: 每个节点的颜色是黑色或者红色; 根节点为黑色; 叶节点(NULL)是黑节点,实际不存在; 红节点的子节点是黑节点; 从一个节点到叶节点的路径上包含相同数目的黑节点,黑色平衡树; 特性5保证红黑树从根节点到叶节点的最长路径不大于最短路径的两倍,保证黑色平衡的特性。由于这一约束的存在,将插入节点的颜色标记为红色,能够尽可能避免自平衡,插入黑色

十里清风 6698

第七章 查找(中)【BST,AVL,红黑树,B树B+树】

平衡二叉树(Balanced Binary Tree),简称平衡树(AVL树,G. M. Adelson-Velsky和E. M. Landis))——树上任一结点的左子树和右子树的高度之差不超过1。结点的平衡因子=左子树高-右子树高。平衡二叉树结点的平衡因子的值只可能是−1、0或1只要有任一结点的平衡因子绝对值大于1,就不是平衡二叉树。

zdlzf的博客 1566

b树,b+树,红黑树

*查询:**时间复杂度都是O(logN),红黑树小于AVL树(因为AVL树高度差不超过1,红黑树不超过两倍,即AVL树平衡要求更严格,所以红黑树查询效率更慢)MyISAM 引擎的索引与 InnoDB 有本质区别:数据和索引完全分离存储 (数据存在.MYD文件,索引存在.MYI文件),且无论主键索引还是二级索引,红黑树是一个二叉搜索树,它和AVL树一样,都是对二叉搜索树进行了平衡,只是平衡的策略不同。访问节点在硬盘上进行,节点内查找在内存上进行,树高就是读取硬盘的次数。(偏移量),而非完整数据或主键值。

qq_41882808的博客 1089

红黑树 B树 B+树

红黑树 假设1-100个数字 让你猜 根据提示告诉你打了还是小了 想到的算法肯定是二分查找 如果转成数据结构 有哪些? 二叉树 二分查找树 由一组数{0.3.4.5.6.8} 时间复杂度就是树的深度 logn 这个树经过增删操作可能变成这样: 虽然是一棵树 但本质上变成了链表 时间复杂度变成了O(n) 平衡二叉树 我们要改造这个树 改造成平衡二叉树(追求极致的平衡) 那么有了平...

weixin_44734751的博客 1315

红黑树&B树&B+树对比分析

红黑树 二叉查找树 学习红黑树之前先理解一下二叉查找树(BST),二叉查找树的特性: ​ 1.左子树上所有结点的值均小于或等于它的根结点的值。 ​ 2.右子树上所有结点的值均大于或等于它的根结点的值。 ​ 3.左、右子树也分别为二叉排序树。 如图,一个普普通通的二叉树: 查找某个节点所需的最大次数等同于BST的高度,插入节点时也是利用类似的方法一层层比较大小查找到新节点合适的插入位置.这么来看虽...

设xy为0的博客 3563

啥是二叉搜索树、B树、B+树、AVL树、红黑树,怎么那么多的树,一文全总结

目录 1. 二叉搜索树 1)概念 2)特点 3)二叉搜索树存在的局限 2. B树 1)概念 2)特点 3)B树查询流程 3.B+树 1)概念 2)特点 3)B+树与B树对比 4. AVL树(平衡二叉树) 1)概念 2)AVL保持平衡的四种操作 3)AVL存在的局限性 5. 红黑树 1)概念 2)特征 3)红黑树的自平衡操作 6.二叉搜索树、B树、B+树、AVL树、红黑树的常见面试题 1)为什么设计红黑树 2)B树的作用 3)B树和 B+树的区别 4)...

mike_jun的博客 2894

红黑树原理分析 2-3-4树

2-3-4树 2-3-4 树把数据存储在叫做元素的单独单元中。它们组合成节点,每个节点都是下列之一 2-节点,就是说,它包含 1 个元素和 2 个儿子, 3-节点,就是说,它包含 2 个元素和 3 个儿子, 4-节点,就是说,它包含 3 个元素和 4 个儿子 。 每个儿子都是(可能为空)一个子 2-3-4 树。根节点是其中没有父亲的那个节点;它在遍历树的时候充当起点,因为从它可以到达所有的其他节点。叶子节点是有至少一个空儿子的节点。 同B树一样,2-3-4 树是有序的:每个元素必须大于或等于它左边的和它的

qq_24447809的博客 463

从2-3-4树到红黑树原理分析以及C++实现红黑树建树

何为调整?(颜色调整+旋转调整)1、“叔叔存在且为红”的时候,只需要进行颜色调整,即把父亲结点和叔叔结点的颜色设置为BLACK,把祖父结点的颜色设置为RED(若祖父结点为根结点,则再变黑);2、(前提),出现"叔叔不存在"或者,把父结点颜色设置为BLACK,把祖父结点的颜色设置为RED3、(前提),出现或者,把新增(当前)结点颜色设置为BLACK,把祖父结点的颜色设置为RED。

呵呵哒!的博客 920
上一篇: Python最长回文子串
下一篇: 一文弄懂动态规划(DP Dynamic Programming)下楼梯,国王和金矿,背包问题,Dijkstra算法
GhostintheCode
博客等级 码龄8年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值