平衡二叉查找树和多路查找树

平衡二叉查找树

普通平衡二叉查找树

平衡二叉树定义是按照有序排列成树状,左子树数据大于右子树,任意节点的左右子树高度不能大于1
image.png
优点:可以保证绝对的平衡
缺点:当进行删除节点和新增节点,树进行自平衡的时候,需要频繁树旋转,性能比较低

红黑树

红黑树也是一种平衡二叉树,但是定义不同,红黑树要求是:每个节点要么是红色节点要么是黑色节点,叶子节点都是黑的,如果节点是红的,那么子节点一定是黑色的,不可以出现连续的红节点,可以出现连续的黑节点,任何子树的黑节点个数需要保证相同
image.png
优点:红黑树是普通红黑树的改进版本,可以看出允许连续黑节点,这样就可以打破任意节点的左右子树高度不能大于1的规则,没有要求绝对的平衡,对于删除和新增,可以一定程度减少树的旋转

应用范围:适用于数据的查找,但是数据量比较大情况依然树的高度会很高(只有二叉),所以一般用于内存操作,不适合IO操作,比如JDK的HashMap就使用了这个结构来提高检索速度

平衡多路查找树

b树

定义一个m阶的树,要求每个节点都只能包含m-1个节点,也意味着每个节点只能有m-1个子节点,同时也要满足平衡树的定义,左右子树高度差不能大于1
image.png

优点: 相对于平衡二叉树,这里变成了多路,可以容纳更多数据,同时树的高度也不会很高,这样查找效率更高
缺点:效率不是很稳定,因为非叶子节点也是存全量数据的,同时进行范围查找也不方便,需要进行中序遍历之类的。还有一点就是建立二级索引也要存全量数据,很不方便,而且非叶子节点存全量数据,会使得单个节点在有限数据字节文件情况下,存的数据比较少,树的高度依然会比较高

b+树

定义一个m阶的树,要求每个节点都只能包含m-1个节点,也意味着每个节点只能有m-1个子节点,同时也要满足平衡树的定义,左右子树高度差不能大于1,但是全量数据只存在叶子节点,非叶子节点只存关键检索数据
image.png
优点:数据只存叶子节点,意味着检索的性能都稳定的;同时非叶子节点也只存关键字数据,这样树的高度相比b树会更低,同时叶子节点和非叶子节点都是有链表相连,范围查询也比较方便;还有可以比较方便建立二级索引,不需要存全量数据,只要存索引和一级索引数据相关联就可以。

应用范围:适合用于大型中间件的存储,树的高度很低,IO操作次数很少。比如mysql数据库就是使用这种结构,方便进行范围查找和二级索引的灵活建立。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins 发布服务到linux服务器

1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括p…

[leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

题目: 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…

《昇思25天学习打卡营第6天 | 函数式自动微分》

《昇思25天学习打卡营第6天 | 函数式自动微分》 目录 《昇思25天学习打卡营第6天 | 函数式自动微分》函数式自动微分简单的单层线性变换模型函数与计算图微分函数与梯度计算Stop Gradient 函数式自动微分 神经网络的训练主要使用反向传播算法,模型预测值&#xff0…

JAVA每日作业day7.1-7.3小总结

ok了家人们前几天学了一些知识,接下来一起看看吧 一.API Java 的 API ( API: Application( 应用 ) Programming( 程序 ) Interface(接口 ) ) Java API 就是 JDK 中提供给我们使用的类,这些类将底层 的代码实现封装了起来&#x…

Linux多进程和多线程(四)进程间通讯-定时器信号和子进程退出信号

多进程(四) 定时器信号alarm()函数示例alarm()函数的限制定时器信号的实现原理setitimer()函数setitimer()和alarm()函数的区别 setitimer() old_value参数的示例 对比alarm()区别总结: 子进程退出信号 示例: 多进程(四) 定时器信号 SIGALRM 信号是用来通知进程…

新声创新20年:无线技术给助听器插上“娱乐”的翅膀

听力损失并非现代人的专利,古代人也会有听力损失。助听器距今发展已经有二百多年了,从当初单纯的声音放大器到如今的全数字时代助听器,助听器发生了翻天覆地的变化,现代助听器除了助听功能,还具有看电视,听…

微信小程序 调色板

注意:是在uniapp中直接使用的一个color-picker插件,改一下格式即可在微信小程序的原生代码中使用 https://github.com/KirisakiAria/we-color-picker 这是插件的地址,使用的话先把这个插件下载下来,找到src,在项目创…

FreeRTOS和UCOS操作系统使用笔记

FreeRTOS使用示例 UCOS使用示例 信号量使用 信号量访问共享资源区/ OS_SEMMY_SEM; //定义一个信号量,用于访问共享资源OSSemCreate ((OS_SEM* )&MY_SEM, //创建信号量,指向信号量(CPU_CHAR* )"MY_SEM", //信号量名字(OS_SEM_CTR )1, …

imx6ull/linux应用编程学习(8)PWM应用编程(基于正点)

1.应用层如何操控PWM: 与 LED 设备一样, PWM 同样也是通过 sysfs 方式进行操控,进入到/sys/class/pwm 目录下 这里列举出了 8 个以 pwmchipX(X 表示数字 0~7)命名的文件夹,这八个文件夹其实就对应了…

守护矿山安全生产:AI视频分析技术在煤矿领域的应用

随着人工智能(AI)技术的快速发展,其在煤矿行业的应用也日益广泛。AI视频智能分析技术作为其中的重要分支,为煤矿的安全生产、过程监测、效率提升和监管决策等提供了有力支持。 一、煤矿AI视频智能分析技术的概述 视频智慧煤矿AI…

数据库测试数据准备厂商 Snaplet 宣布停止运营

上周刚获知「数据库调优厂商 OtterTune 宣布停止运营」。而今天下班前,同事又突然刷到另一家海外数据库工具商 Snaplet 也停止运营了。Snaplet 主要帮助开发团队在数据库中生成仿真度高且合规的测试数据。我们在年初还撰文介绍过它「告别手搓!Postgres 一…

Continual Test-Time Domain Adaptation--论文笔记

论文笔记 资料 1.代码地址 https://github.com/qinenergy/cotta 2.论文地址 https://arxiv.org/abs/2203.13591 3.数据集地址 论文摘要的翻译 TTA的目的是在不使用任何源数据的情况下,将源预先训练的模型适应到目标域。现有的工作主要考虑目标域是静态的情况…

Vue项目打包上线

Nginx 是一个高性能的开源HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它在设计上旨在处理高并发的请求,是一个轻量级、高效能的Web服务器和反向代理服务器,广泛用于提供静态资源、负载均衡、反向代理等功能。 1、下载nginx 2、…

探讨命令模式及其应用

目录 命令模式命令模式结构命令模式适用场景命令模式优缺点练手题目题目描述输入描述输出描述题解 命令模式 命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其…

【高级篇】第9章 Elasticsearch 监控与故障排查

9.1 引言 在现代数据驱动的应用架构中,Elasticsearch不仅是海量数据索引和搜索的核心,其稳定性和性能直接影响到整个业务链路的健康度。因此,建立有效的监控体系和掌握故障排查技能是每一位Elasticsearch高级专家的必备能力。 9.2 监控工具:洞察与优化的利器 在Elastics…

Rough.js在Vue3中生成随机蒙德里安风格的抽象艺术

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Mondrian风格艺术生成器:用Vue和RoughJS创造抽象艺术 应用场景 Mondrian风格艺术以其大胆的色彩块和简单的几何形状而闻名。这种风格可以应用于各种设计项目,包括海报、插图和网页设计…

基于Web技术的教育辅助系统设计与实现(SpringBoot MySQL)+文档

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Markdown+VSCODE实现最完美流畅写作体验

​下载VSCODE软件 安装插件 Markdown All in One :支持markdown的语言的; Markdown Preview Enhanced :观看写出来文档的效果; Paste IMage :添加图片的 Code Spell Checker检查英文单词错误; 基础语法 标题 #一个…

AI 会淘汰程序员吗?

前言 前些日子看过一篇文章,说国外一位拥有 19 年编码经验、会 100% 手写代码的程序员被企业解雇了,因为他的竞争对手,一位仅有 4 年经验、却善于使用 Copilot、GPT-4 的后辈,生产力比他更高,成本比他更低&#xff0c…

西南交通大学【算法分析与设计实验3】

实验3.3 任务分配问题 实验目的 (1)理解穷举法典型算法的求解过程。 (2)学习穷举法的时间复杂度分析方法,并通过实验验证算法的执行效率。 (3)学会如何利用穷举法求解具体问题,了…