17|红黑(R-B)树:和平衡二叉树有什么不同?
王健伟
你好,我是王健伟。
上次我和你分享了“平衡二叉树”这个话题,引出了“平衡性调整”的概念。主要目的是让这棵二叉树左右看起来比较“平衡”,不出现左子树很高、右子树很矮,或者左子树很矮、右子树很高的情形。这样,在进行节点的查找、插入、删除等操作时效率会比较高。
但这同时也带来了缺点——在插入和删除节点时,为了调整平衡,必须对树中的节点进行旋转,从而在一定程度上影响程序的执行效率。
平衡二叉树的一条重要性质是“任一节点的左子树和右子树的高度之差不超过 1”。这里引入一个“非严格平衡二叉树”的概念。
非严格平衡二叉树指的是不完全符合前面平衡二叉树的定义,或者说并不是一种严格意义上的平衡二叉树。但这种二叉树最小高度仍旧在 (n 代表节点数)附近,或者说,查找操作的时间复杂度仍旧为 O() 。所以,我们仍旧可以认为这种二叉树是一种平衡二叉树。这就引出了这节课要讲解的“红黑树”。
首先一起看一看红黑树的基本概念。
什么是红黑树?
红黑树(Red-Black Tree),简称 R-B 树,是一种高效的二叉查找树,由 Rudolf Bayer 在 1972 年发明的,当时被称为“对称 / 平衡二叉 B 树”,后来在 1978 年由 Leo J. Guibas 和 Robert Sedgewick 修改为“红黑树”。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
红黑树是一种高效的自平衡二叉查找树,通过引入颜色标记和特定的插入、删除规则,减少了平衡调整的频率,保持了树的相对平衡。红黑树的节点有红色和黑色之分,具有四个性质,包括根节点为黑色、叶子节点为黑色空节点、相邻节点不能同时为红色、以及左右子树的黑高度相同。相比于AVL树,红黑树在插入和删除操作时维护平衡的成本较低,因此在频繁进行插入和删除操作时具有更高的效率。红黑树的高度大约为2log2n,在执行效率上与AVL树相差不大,甚至更高。文章还提供了红黑树的基础实现代码,并强调了红黑树在频繁进行插入和删除操作时的高效性。下节课将深入探讨红黑树插入操作后的平衡性调整以及其实现代码。文章最后提出了课后思考问题,鼓励读者分享自己的经验,并邀请他们分享课程给更多朋友一起学习。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《快速上手 C++ 数据结构与算法》,新⼈⾸单¥68
《快速上手 C++ 数据结构与算法》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- HH🐷🐠🌝java 工具类 HashMap 就用到了红黑树, 防止树退化成链表。2023-12-26归属地:广东
收起评论