树的结构(b,b+树)

无论线性表,栈还是队列,都是一对一,查询的时候,效率较低,数据量比较的大的情况

1.树的定义

一种数据结构,有层次关系的集合,根朝上,叶朝下

除了根节点外,每个子节点都有多个不想交的子树

父节点

子节点

兄弟节点

树根节点(根节点)

叶子节点

子树

空树

度:最大子树数,多少分支

层次(深度):第一层,第二次,以此类推,最大层数是4

森林:树多了

2.二叉树

树中包含的各个节点不能超过2,度不能超过2

二叉树衍生出满二叉树和完全二叉树,二叉树分为顺序存储的二叉树,基于链表存储的二叉树。

二叉排序树,平衡二叉树,赫夫曼树,红黑树,都是属于二叉树。

2.1二叉排序树,搜索树

比它小放它左边,比它大放右边。

查找复杂度较低,o(logn)

插入的数据总是比已有的数据大,子树会向一边切斜,树的层次变深,形成链表结构,出现了平衡二叉树。

2.2平衡二叉树

子树的高度不大于1,查询速度快,插入和删除慢,要进行旋转和平衡度计算。为了解决删除插入比较耗时,出现了红黑树

2.3红黑树

在平衡二叉树上增加了红色或黑色,增加了颜色属性

根节点和叶子节点是黑色,内部节点是红色和黑色较低,叶子节点必须是黑色,根节点只能是黑色。

从根节点走到空节点,所经过的黑节点的数目是相同的。

左旋和右旋,翻转颜色

AVL树和rb树的区别

3.多叉树

大规模数据存储,二叉树树的深度过深,导致查询效率低下,磁盘io读写过于频繁,导致查询效率低下,多叉树能够解决这个问题

b树,b+树

3.1 b-tree

b树适用于读写相对大的数据块的存储系统

每个节点可以存储超过2个元素,可以超过2的字节点

拥有AVL平衡树的特点

拥有二叉搜索树的特点

B树比较矮,分叉越多,树越矮,io次数较少,搜索性能较高。

三阶B树最多有3个分叉,四阶B树最多拥有4个分叉

一个节点最好凑够一个数据块的大小,凑够一个数据块的大小,直接写入磁盘。

一般4096b一个节点,因为一个磁道就4096b,但是不一定,根据你磁盘来弄。

3.2 b+tree

分为非叶子节点,叶子结点

内部节点只存储key,不存储值

叶子节点存储key和value具体数据,、

所有的叶子节点形成一个有序链表,排序和查询范围支持好。

b树的节点存储的元素个数是m,那么它的字节点数是m+1

b+比b树的优势,也是为什么mysql要选择b+树

b+存储更多的key,树的高度更低,时间复杂度越小,查询块

数据在叶子节点,每次都要到叶子节点,查询稳定,都是去第三层。

叶子节点构成链表结构,方便查询和排序

相关推荐
小白程序员成长日记5 分钟前
2025.11.29 力扣每日一题
数据结构·算法·leetcode
咫尺的梦想00743 分钟前
链表-反装链表
数据结构·链表
老鱼说AI1 小时前
算法基础教学第一步:数据结构
数据结构·python·算法
white-persist3 小时前
【攻防世界】reverse | IgniteMe 详细题解 WP
c语言·汇编·数据结构·c++·python·算法·网络安全
山峰哥4 小时前
沉浸式翻译插件深度评测:打破语言壁垒的黑科技利器
数据结构·科技·算法·编辑器·办公
报错小能手5 小时前
数据结构 定长顺序表
数据结构·c++
再卷也是菜6 小时前
C++篇(21)图
数据结构·c++·算法
没书读了7 小时前
数据结构-考前记忆清单
数据结构
小龙报8 小时前
【算法通关指南:数据结构和算法篇 】队列相关算法题:3.海港
数据结构·c++·算法·贪心算法·创业创新·学习方法·visual studio
稚辉君.MCA_P8_Java9 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法