【我们尽量少说废话的讲完】C++红黑树原理
1|0红黑树的出现
红黑树增删改查的时间复杂度都是O(logn)。
如果插入的数据随机,那么使用二叉搜索树即可保证树接近平衡。此时增删改查的效率都为O(logN)。
但如果插入的数据为有序的,此时二叉搜索树极其不平衡,退化为链表,时间复杂度降为O(N)。而红黑树就是为了应对这种极端情况。
2|0红黑树的特点
红黑树的特点包括:
- 两个红节点不可相邻
- 根结点一定为黑色
- 左子树到根和右子树到根的黑色节点数量要相同
- 每次插入新节点默认为红色
即红黑树会根据以上的特点,当插入或删除节点导致不满足前三条条件时,红黑树会自行调整平衡。调整手段无外乎三种:变色、左旋和右旋。
3|0红黑树插入删除节点可视化网站
可以从这个网站清晰的看到红黑树删除和插入时保持红黑树自身平衡的方法。
4|0红黑树举例
5|0红黑树插入举例
红黑树的插入和删除均是满足上面所说的前三条特征,其中删除比插入更为复杂。这里只对插入做举例说明。
两红相连 不合规
先右旋:
然后变色
__EOF__

本文作者:铃灵狗的水墨书香
本文链接:https://www.cnblogs.com/linglingdog/p/17913227.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/linglingdog/p/17913227.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】