红黑树详解
这篇讲的非常好
http://blog.csdn.net/liuzhanchen1987/article/details/7325376
红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。
1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点,即空结点(NIL)是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。
也就是说,不存在两个红的,连在一起。
每次一个节点插入的时候,默认是红色。然后根据一定的情况进行调整。
1. 如果父是黑的,不需调整。
2. 如果父是红的,叔叔是红的,那么祖父变成红的,父和叔变成黑的。然后针对祖父进行调整。
3. 如果父是红的,叔叔是黑的。如果当前节点,父,和祖父,不在同一个方向,比如当前是父的右,父是祖父的左,
那么,当前变父,父变当前的左。这样方向就一致了。
4. 上面3的情况,也会被调整成这个:当前,父,和祖父,在同一个方向,比如都是左子树,
那么右旋,父成为 当前 和 祖父 的父节点,原来当前和父是红的,祖父是黑的,变成 当前 和 祖父是红的,父是黑的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!