二叉树,红黑树,B树、B+树的区别

news2024/11/19 18:19:56

树的概念

在这里插入图片描述

树的演变

在这里插入图片描述

二叉搜索树

二叉搜索树可以提高查询效率,左小右大,但是他不好掌握根节点的数字是哪个,容易一边倒,导致层数变多,降低效率

平衡二叉搜索树

平衡二叉搜索树在二叉搜索树的基础上,通过控制任意一个节点的左子树和右子树的高度差距不超过1,如果超过就要旋转的原则,来减少树的高度,树达到一个平衡,

由于,旋转条件太过极端,随着元素越来越多,每次旋转需要重新排序的情况越来越复杂,越消耗就会越大.

红黑树

红黑树在平衡二叉搜索树基础之上,进行自平衡,自己来根据添加的数据来选定根节点是哪个,可以降低层数,提高查询效率.
但是红黑树一个节点只能存一个数

红黑树的基本思想
(在保证效率的基础上,减少旋转带来的性能消耗.)牺牲一小部分查询效率,换取一大部分的旋转性能提升,

红黑树的特性约束

性质1. 结点是红色或黑色。
性质2. 根结点是黑色。
性质3. 所有叶子都是黑色。(叶子是NIL结点)
性质4. 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)
性质5. 从任一节结点其每个叶子的所有路径都包含相同数目的黑色结点。

这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。

b树

b树,一个节点可以搞多个树,又减少了层数

b+树

b+ 树,在b树的基础上进行再次优化,最多三层,前两层存的是索引,第三层叶子节点才是具体数据,查询效率最高

mysql的索引机制使用的是B+树
mysql索引就是用的b+树,对数据进行重排序,提高查询效率,但是不利于更新数据,
而且占用空间,因为一旦数据更新,b+树也要跟着重排

索引的缺点

1.,就是会生成一个占用一部分磁盘空间.
2.数据库的数据更改,索引的更新,会消耗性能
3.索引可能会失效
()没办法进行条件查询就会索引失效,(模糊查询,或者不等于 都会导致条件查询失败,因为根据这些条件没办法去查找具体的子节点的数据范围,来摒弃一部分数据,就失去了建立索引的意义,)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shell“语言程序设计基础......“

Shell语言也有设计基础吗?...... 没有所谓的语言程序设计基础往往是一种就是菜鸡互啄的一种状态......哦,据说当年,发明笔记本电脑的人(想出发明笔记本电脑这个创意的人)一开始的工作是写说明书的Linux 或者 Unix 发明的那个年代应该还没有这种充满了营销的或者应试的表述方法…

密码学 密钥管理

密钥管理 出发点:在一种安全策略指导下的密钥产生,存储,分配,删除,归档和应用方案。 目的:维持系统各实体之间的密钥关系,抗击各种威胁: 1.密钥泄露 2.密钥和公钥身份真实性丧失 3…

计算机内存机制精讲

全文目录1、一个程序在计算机中到底是如何运行的?2、虚拟内存到底是什么?虚拟地址中间层思想3、虚拟地址空间以及编译模式CPU的数据处理能力编译模式32位编译模式64位编译模式4、内存对齐,提高寻址效率5、内存分页机制,完成虚拟地…

react-native学习过程记录

1、关于react-native init 创建项目报错 cli.init is not a function 问题解决 直接采用npx react-native init chapter2 --version 0.68.2 创建项目(即指定version) 参考地址:https://blog.csdn.net/qq_42231156/article/details/126396576…

【云原生进阶之容器】第二章Controller Manager原理剖析--2.1节Controller Manager综述

1 K8S Controller Manager原理解析 1.1 Controller Manager作用简述 一般来说,智能系统和自动系统通常会通过一个“操作系统”不断修正系统的工作状态。在Kubernetes集群中,每个Controller都是这样的一个"操作系统",它们通过APIServer 提供的(List-Watch)接口实…

小程序集成Three.js开发常见问题

1.加载模型后开发者工具卡顿 我想很多小伙伴都遇到过这个问题,网上很多方法,说什么清缓存,清内存,基本作用都不大。在不断的摸索中,我逐渐找到了一些解决的办法,希望对你有帮助。 (1) 截至发文时间&#…

Java-集合(1)

什么是集合? 在前面的学习中,保存多个数据,用的是数组。 但是数组有很多不同的地方: 1.长度开始时必须指定,且一旦指定无法更改 2.保存的必须为同一类型元素,虽说可以多态保存,但是限制性也很大…

再学C语言17:类型转换

语句和表达式通常只应该使用一种类型的常量和变量 如果使用混合类型,C将会使用一个规则集合自动完成类型转换 一、基本的规则 1)当出现在表达式中时,有符号和无符号的char类型和short类型都将自动被转换为int(在需要的情况下将…

新华三“智・行中国2022”|大厂行动,如何擘画“内循环”的数字未来?

作者 | 曾响铃 文 | 响铃说 继农业经济、工业经济之后,数字经济登上历史的舞台,成为大国的主要经济形态。在我国,根据中国信息通信研究院发布的《中国数字经济发展白皮书(2022年)》,截至2021年&#xff0…

关于浙大MPA复试的一些常规问题

2022年联考笔试刚刚落下帷幕,就收到很多小伙伴关于浙大MPA项目复试的问题咨询,趁着今天有空就大家问的一些问题在这里统一做个回复哦~1、问:正常情况下多少分可以进入浙大MPA项目复试? 答:统计了2018——2022浙大MPA项…

Harmony/OpenHarmony应用开发-转场动画组件内转场

组件内转场主要通过transition属性配置转场参数,在组件插入和删除时显示过渡动效,主要用于容器组件中的子组件插入和删除时,提升用户体验(需要配合animateTo才能生效,动效时长、曲线、延时跟随animateTo中的配置&#…

GitHub官网下载Axios.js步骤

目录 前言必读 一、下载步骤 1.进入GitHub官网 2.搜索axios 3.点击这个axios/axios 4.点击压缩包下载 5.解压,进入到dist文件里面就找到了 二、使用方法 前言必读 读者手册(必读)_云边的快乐猫的博客-CSDN博客 一、下载步骤 1.进入…

数据在内存中的存储(11)

目录 1、数据类型介绍 1、类型的基本归类 1、整形家族: 2、浮点数家族: 3、构造类型(自定义类型): 4、指针类型: 5、空类型: 2、整形在内存中的存储 1、原码、反码、补码 2、大小端介…

[框架]Mybatis的使用

目录一、数据持久化的概念及ORM(Object Relational Mapping “对象关系映射”)的原理1.1 持久化1.2 ORM(Object Relational Mapping)1.3 ORM解决方案(包含四个部分)二、MyBatis简介2.1 简介2.2 特点2.3 MyB…

数据结构-考研难点代码突破(C++实现无向图图最小生成树算法(Prim,Kruskal)图解操作细节(引自C语言中文网))

以代码的方式复习考研数据结构知识点,这里在考研不以代码为重点,而是以实现过程为重点 文章目录1. 无向图最小生成树算法Kruskal算法C代码实现Prim算法C代码实现1. 无向图最小生成树算法 常见基本概念记忆: 生成树定义: 无向图中…

MySQL索引相关知识

1、什么是索引? 索引是存储引擎用于提高数据库表的访问速度的一种数据结构。通过给字段​​添加索引​​​可以​​提高数据的读取速度​​​,提高项目的并发能力和抗压能力。​​索引优化​​​时mysql中的一种优化方式。索引的作用相当于​​图书的目录…

一文搞懂Linux内核进程原理及系统调用机制

进程四要素 有一段程序代其执行有进程专用的系统堆栈空间在内核有task_struct数据结构进程有独立的存储空间,拥有专有的用户空间 如果具备前三点缺少第四条,称为“线程”;如果完全没有用户空间,称为“内核线程”;如果共享用户空间…

中国剩余定理

最近总是用到中国剩余定理,以前对于这个定理非常的模糊,有时间静下心来简单的学习一下中国剩余定理,文章没有深度,写下这篇博客以作记录。 中国剩余定理CRT前言一、描述二、中国剩余定理求解方法1.除以三余二2.除以五余三3.除以七…

14. UserAgent 反爬是如何实现的,来看看这篇博客

本篇博客实现 【爬虫训练场】 的第一个反爬案例,User-Agent 反爬。 文章目录什么是 User-Agent 反爬在 Python Flask 中实现 User-Agent 反爬什么是 User-Agent 反爬 User-Agent 反爬是一种防止网站被爬虫爬取的技术。 当爬虫向网站发送 HTTP 请求时,会…

初识Kubernetes:(3)Kubernetes资源管理

初识Kubernetes:(3)Kubernetes资源管理1 资源管理介绍2 YAML语法介绍2.1 YAML语法介绍2.2 YAML语法示例2.2.1 YAML常量2.2.2 对象2.2.3 数组3 资源管理方式3.1 资源管理方式3.2 命令式对象管理3.2.1 kubectl命令3.2.2 操作(comman…