新闻详情

新闻详情

首页 / 资讯中心 / 详情

红黑树原理 红黑树五大性质 二叉搜索树 平衡树 HashMap红黑树 面试

发布时间:2026/9/27 22:03:56来源:尧图网络
红黑树原理 红黑树五大性质 二叉搜索树 平衡树 HashMap红黑树 面试
基础不牢地动山摇。上一期讲HashMap我们提到一个关键词链表过长会转成红黑树。很多新手卡在这二叉搜索树是什么平衡树是什么红黑树到底好在哪HashMap为什么不直接用AVL树网上很多教程一上来甩一堆复杂定义、旋转代码越看越懵。今天我们循序渐进从最简单二叉树开始大白话拆解红黑树搞懂HashMap引入红黑树的目的。一、铺垫二叉搜索树BST二叉搜索树规则想象一个图书馆书架每个书架格子节点最多分出左右两个分支左格子、右格子左边分支放的书编号 当前格子书编号右边分支放的书编号 当前格子书编号✅ 优点找书很快类似二分查找理想情况下O(logn)每次排除一半分支❌ 致命缺陷如果按顺序放书1、2、3、4、5依次放进去书架会直接变成一条竖长的单列例子依次放编号1、2、3、4、5的书全部只能往右放。此时找编号5的书必须一本一本从头翻查询从O(logn)降级成O(n)和一条链表没有区别。 所以就诞生了平衡二叉树目标不让书架“长歪”左右两边高度差距不能太大。二、AVL平衡树平衡二叉搜索树AVL树规则书架左右两个分支高度差不能超过1。一旦左右高度差超标立刻挪动书本旋转调整平衡。✅ 查询极快书架永远整齐对称❌ 缺点每次新增/拿走一本书很容易触发挪动书本调整成本很高。放到HashMap场景频繁put新增、remove删除元素AVL树不停挪节点开销太大不合适。三、红黑树是什么一句话总结红黑树一种弱平衡二叉搜索树。类比它不会像AVL树那样要求绝对平衡不追求书架绝对左右对称只做一条硬性限制从起点到最远端最长的找书路径不能超过最短路径的2倍。怎么做到给每本书贴标签红色标签、黑色标签5条标签规则约束书架防止书架严重歪掉。平衡要求放宽换来新增、拿走书本时挪动书本旋转次数更少写操作性能更好。通过给节点标记红色/黑色加上5条约束规则限制树不会严重“长歪”。权衡之后插入、删除时旋转次数更少写操作性能更好查询不错增删代价低。HashMap选择它就是看中这个取舍。四、红黑树五大核心性质节点只有两种颜色红色、黑色。根节点一定是黑色。所有叶子节点NIL空节点都是黑色。红色节点的两个子节点必须是黑色。不能出现两个红节点相连。从任意一个节点到它所有后代叶子节点经过的黑色节点数量必须相同黑高一致。✅ 记住核心推论因为规则4、5最长路径最多是最短路径2倍树不会极端倾斜。五、红黑树如何维持平衡变色 旋转新增/拿走一本书会破坏上面5条标签规则红黑树用两种方式修复书架变色改标签红标签改成黑、黑改成红成本最低优先用这个方案。只换标签不用挪动书本。旋转挪动书本左旋、右旋调整书本的上下父子位置不改变书本编号的大小顺序。对比AVLAVL书架稍微不对称就要挪书旋转红黑树优先换标签变色实在不行才挪书旋转次数很少。六、回到HashMap为什么要用红黑树而不是AVL回顾HashMap场景哈希桶上链表过长≥8链表查询O(n)太慢需要升级树。AVL树严格平衡查询快但是增删频繁旋转put/remove旋转多开销大。红黑树弱平衡查询接近AVL增删旋转次数少综合性能更好。所以很多标准库都用红黑树比如C 的std::map、std::setJava 的TreeMap、TreeSetLinux 内核里的一些数据结构HashMap的访问模式查询多但是put、remove也不少红黑树综合性价比更高。补充当树节点减少到≤6红黑树退化成链表。因为节点很少的时候链表遍历更快省去树维护成本。七、高频坑点红黑树不是绝对平衡树是弱平衡不要和AVL混淆。红黑树平衡不靠高度差靠颜色规则约束黑高。HashMap树化不是只要链表≥8就转树还要求数组容量≥64数组容量不足优先扩容不树化。红黑树的节点除了key/value还会保存左右子节点、父节点、颜色标记内存占用比链表节点更大。节点少的时候链表更省内存。专栏总结二叉搜索树有序但是容易长歪退化成链表。AVL树严格平衡查询快但是增删旋转开销巨大。红黑树是弱平衡二叉搜索树通过红黑5条规则约束最长路径不超过最短路径2倍。修复手段优先变色必要时左旋/右旋。增删的旋转次数远少于AVL。HashMap选用红黑树在查询性能和增删维护成本之间做权衡。节点少时链表更合适节点多了升级红黑树节点变少再退回链表。欢迎点赞收藏关注下一期继续更新Java 泛型让我们一起轻松学习每个知识点。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

前端网页设计大作业全攻略:从代码到设计说明报告 2026/9/27 23:48:28

前端网页设计大作业全攻略:从代码到设计说明报告

简介:这份前端网页设计大作业资源面向高校计算机与设计相关专业学生,以及需要完成课程项目或自学前端入门的学习者,提供一套可直接参考的完整网页代码与配套设计说明报告。压缩包为rar格式,整体约11.58MB,内容以HTML、…

阅读更多 →
Winlogon200X_v3c.zip:老Windows登录链检查脚本包详解与避坑指南 2026/9/27 23:48:28

Winlogon200X_v3c.zip:老Windows登录链检查脚本包详解与避坑指南

简介:Windows系统的登录链路由smss、winlogon、userinit和explorer等关键进程串联而成,其中Winlogon在启动过程中承担着加载用户配置和启动桌面进程的核心角色。一旦注册表中Winlogon键值被篡改或误删,就会出现“输密码闪退”或“安全模式起不…

阅读更多 →
Python中文文本分析实战:从分词到情感分析的完整流程 2026/9/27 23:48:28

Python中文文本分析实战:从分词到情感分析的完整流程

简介:这份Python中文文本分析期末大作业压缩包面向高校学生及文本挖掘初学者,以《三国演义》为分析对象,完整演示了中文分词、词频统计、词云绘制、人物出场排序、社交网络关系建模与章回字数统计等典型任务。包内共13个文件,涵盖…

阅读更多 →
广而告之微信推广平台速查手册:3步搞定备案与流量闭环 2026/9/27 23:48:28

广而告之微信推广平台速查手册:3步搞定备案与流量闭环

广而告之微信推广平台速查手册:3步搞定备案与流量闭环 做网站这行十年,我见过太多老板被“备案”这两个字卡得死死的。明明代码写完了,服务器也租好了,结果卡在工信部备案这一步,流程一头雾水,不知道找谁提交,材料怎么填,多久能下来。这种焦虑感,我…

阅读更多 →
Word表格跨文档粘贴变形原因与解决方案全解析 2026/9/27 23:48:08

Word表格跨文档粘贴变形原因与解决方案全解析

1. 从一个让人抓狂的场景说起你有没有遇到过这种情况:花了大半天时间在一个Word文档里精心调整好一张表格——列宽、行高、字体、边框、底纹,每一项都反复微调过,看起来赏心悦目。然后你打开另一个Word文档,选中这张表格&#xff…

阅读更多 →
Wand-Enhancer:3 个阶段给 Wand 客户端打好补丁,远程面板、禁用自动更新全拿下 2026/9/27 23:48:08

Wand-Enhancer:3 个阶段给 Wand 客户端打好补丁,远程面板、禁用自动更新全拿下

Wand-Enhancer:3 个阶段给 Wand 客户端打好补丁,远程面板、禁用自动更新全拿下 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉