社区
C++ 语言
帖子详情
算法第四版中另一种定义的红黑树,为什么红链接只能是左链接
hxmmxh
2019-05-17 03:05:56
该书中先介绍了2-3查找树,然后引入了红黑树,得到了和大部分书籍中定义不同的红黑树。即改进2-3树,将3-结点表示为由一条左斜的红色链接相连的两个2-结点。具体定义如下:
1.红链接均为左链接
2.没有任何一个结点同时和两条红链接相连
3.任意空链接到根结点的路径上的黑链接数量相同
其中2,3条容易理解,能和红黑树定义对应的上,但是第一条为什么红链接只能是左链接,我感觉有右的红链接存在也不影响红黑树的时间复杂度,求解释
...全文
167
2
打赏
收藏
算法第四版中另一种定义的红黑树,为什么红链接只能是左链接
该书中先介绍了2-3查找树,然后引入了红黑树,得到了和大部分书籍中定义不同的红黑树。即改进2-3树,将3-结点表示为由一条左斜的红色链接相连的两个2-结点。具体定义如下: 1.红链接均为左链接 2.没有任何一个结点同时和两条红链接相连 3.任意空链接到根结点的路径上的黑链接数量相同 其中2,3条容易理解,能和红黑树定义对应的上,但是第一条为什么红链接只能是左链接,我感觉有右的红链接存在也不影响红黑树的时间复杂度,求解释
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qq_36147149
2021-01-12
打赏
举报
回复
同问,楼主明白了吗?
code tea
2022-05-08
举报
回复
@qq_36147149
找了一圈没人解释, 我的理解是只能左红链接或者只能右红链接二选一, 是一种规范。左红链接在代码实现上可以规避更多边界条件问题
算法
导论
中
文版
在有关
算法
的书
中
,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类
算法
,并着力使这些
算法
的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;
算法
以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 --------------------------------------------------------------- 目录 Introduction to Algorithms, Third Edition 出版者的话 译者序 前言 第一部分 基础知识 第1章
算法
在计算
中
的作用 1.1
算法
1.2 作为
一种
技术的
算法
思考题 本章注记 第2章
算法
基础 2.1 插入排序 2.2 分析
算法
2.3 设计
算法
2.3.1 分治法 2.3.2 分析分治
算法
思考题 本章注记 第3章 函数的增长 3.1 渐近记号 3.2 标准记号与常用函数 思考题 本章注记 第4章 分治策略 4.1 最大子数组问题 4.2 矩阵乘法的Strassen
算法
4.3 用代入法求解递归式 4.4 用递归树方法求解递归式 4.5 用主方法求解递归式 4.6 证明主定理 4.6.1 对b的幂证明主定理 4.6.2 向下取整和向上取整 思考题 本章注记 第5章 概率分析和随机
算法
5.1 雇用问题 5.2 指示器随机变量 5.3 随机
算法
?5.4 概率分析和指示器随机变量的进一步使用 5.4.1 生日悖论 5.4.2 球与箱子 5.4.3 特征序列 5.4.4 在线雇用问题 思考题 本章注记 第二部分 排序和顺序统计量 第6章 堆排序 6.1 堆 6.2 维护堆的性质 6.3 建堆 6.4 堆排序
算法
6.5 优先队列 思考题 本章注记 第7章 快速排序 7.1 快速排序的描述 7.2 快速排序的性能 7.3 快速排序的随机化版本 7.4 快速排序分析 7.4.1 最坏情况分析 7.4.2 期望运行时间 思考题 本章注记 第8章 线性时间排序 8.1 排序
算法
的下界 8.2 计数排序 8.3 基数排序 8.4 桶排序 思考题 本章注记 第9章
中
位数和顺序统计量 9.1 最小值和最大值 9.2 期望为线性时间的选择
算法
9.3 最坏情况为线性时间的选择
算法
思考题 本章注记 第三部分 数据结构 第10章 基本数据结构 10.1 栈和队列 10.2 链表 10.3 指针和对象的实现 10.4 有根树的表示 思考题 本章注记 第11章 散列表 11.1 直接寻址表 11.2 散列表 11.3 散列函数 11.3.1 除法散列法 11.3.2 乘法散列法 11.3.3 全域散列法 11.4 开放寻址法 11.5 完全散列 思考题 本章注记 第12章 二叉搜索树 12.1 什么是二叉搜索树 12.2 查询二叉搜索树 12.3 插入和删除 12.4 随机构建二叉搜索树 思考题 本章注记 第13章
红
黑树
13.1
红
黑树
的性质 13.2 旋转 13.3 插入 13.4 删除 思考题 本章注记 第14章 数据结构的扩张 14.1 动态顺序统计 14.2 如何扩张数据结构 14.3 区间树 思考题 本章注记 第四部分 高级设计和分析技术 第15章 动态规划 15.1 钢条切割 15.2 矩阵链乘法 15.3 动态规划原理 15.4 最长公共子序列 15.5 最优二叉搜索树 思考题 本章注记 第16章 贪心
算法
16.1 活动选择问题 16.2 贪心
算法
原理 16.3 赫夫曼编码 16.4 拟阵和贪心
算法
16.5 用拟阵求解任务调度问题 思考题 本章注记 第17章 摊还分析 17.1 聚合分析 17.2 核
算法
17.3 势能法 17.4 动态表 17.4.1 表扩张 17.4.2 表扩张和收缩 思考题 本章注记 第五部分 高级数据结构 第18章 B树 18.1 B树的
定义
18.2 B树上的基本操作 18.3 从B树
中
删除关键字 思考题 本章注记 第19章 斐波那契堆 19.1 斐波那契堆结构 19.2 可合并堆操作 19.3 关键字减值和删除一个结点 19.4 最大度数的界 思考题 本章注记 第20章 van Emde Boas树 20.1 基本方法 20.2 递归结构 20.2.1 原型van Emde Boas结构 20.2.2 原型van Emde Boas结构上的操作 20.3 van Emde Boas树及其操作 20.3.1 van Emde Boas树 20.3.2 van Emde Boas树的操作 思考题 本章注记 第21章 用于不相交集合的数据结构 21.1 不相交集合的操作 21.2 不相交集合的链表表示 21.3 不相交集合森林 *21.4 带路径压缩的按秩合并的分析 思考题 本章注记 第六部分 图
算法
第22章 基本的图
算法
22.1 图的表示 22.2 广度优先搜索 22.3 深度优先搜索 22.4 拓扑排序 22.5 强连通分量 思考题 本章注记 第23章 最小生成树 23.1 最小生成树的形成 23.2 Kruskal
算法
和Prim
算法
思考题 本章注记 第24章 单源最短路径 24.1 Bellman?Ford
算法
24.2 有向无环图
中
的单源最短路径问题 24.3 Dijkstra
算法
24.4 差分约束和最短路径 24.5 最短路径性质的证明 思考题 本章注记 第25章 所有结点对的最短路径问题 25.1 最短路径和矩阵乘法 25.2 Floyd?Warshall
算法
25.3 用于稀疏图的Johnson
算法
思考题 本章注记 第26章 最大流 26.1 流网络 26.2 Ford\Fulkerson方法 26.3 最大二分匹配 26.4 推送重贴标签
算法
26.5 前置重贴标签
算法
思考题 本章注记 第七部分
算法
问题选编 第27章 多线程
算法
27.1 动态多线程基础 27.2 多线程矩阵乘法 27.3 多线程归并排序 思考题 本章注记 第28章 矩阵运算 28.1 求解线性方程组 28.2 矩阵求逆 28.3 对称正定矩阵和最小二乘逼近 思考题 本章注记 第29章 线性规划 29.1 标准型和松弛型 29.2 将问题表达为线性规划 29.3 单纯形
算法
29.4 对偶性 29.5 初始基本可行解 思考题 本章注记 第30章 多项式与快速傅里叶变换 30.1 多项式的表示 30.2 DFT与FFT 30.3 高效FFT实现 思考题 本章注记 第31章 数论
算法
31.1 基础数论概念 31.2 最大公约数 31.3 模运算 31.4 求解模线性方程 31.5
中
国余数定理 31.6 元素的幂 31.7 RSA公钥加密系统 31.8 素数的测试 31.9 整数的因子分解 思考题 本章注记 第32章 字符串匹配 32.1 朴素字符串匹配
算法
32.2 Rabin\Karp
算法
32.3 利用有限自动机进行字符串匹配 32.4 Knuth?Morris?Pratt
算法
思考题 本章注记 第33章 计算几何学 33.1 线段的性质 33.2 确定任意一对线段是否相交 33.3 寻找凸包 33.4 寻找最近点对 思考题 本章注记 第34章 NP完全性 34.1 多项式时间 34.2 多项式时间的验证 34.3 NP完全性与可归约性 34.4 NP完全性的证明 34.5 NP完全问题 34.5.1 团问题 34.5.2 顶点覆盖问题 34.5.3 哈密顿回路问题 34.5.4 旅行商问题 34.5.5 子集和问题 思考题 本章注记 第35章 近似
算法
35.1 顶点覆盖问题 35.2 旅行商问题 35.2.1 满足三角不等式的旅行商问题 35.2.2 一般旅行商问题 35.3 集合覆盖问题 35.4 随机化和线性规划 35.5 子集和问题 思考题 本章注记 第八部分 附录:数学基础知识 附录A 求和 A.1 求和公式及其性质 A.2 确定求和时间的界 思考题 附录注记 附录B 集合等离散数学内容 B.1 集合 B.2 关系 B.3 函数 B.4 图 B.5 树 B.5.1 自由树 B.5.2 有根树和有序树 B.5.3 二叉树和位置树 思考题 附录注记 附录C 计数与概率 C.1 计数 C.2 概率 C.3 离散随机变量 C.4 几何分布与二项分布 *C.5 二项分布的尾部 思考题 附录注记 附录D 矩阵 D.1 矩阵与矩阵运算 D.2 矩阵基本性质 思考题 附录注记
《
算法
》
中
的
红
黑树
实现
有别于上一篇文章介绍的
红
黑树
,在《
算法
<
第四版
>》一书
中
用另一套规则实现了
红
黑树
,主要手段是递归,实现思路来自于2-3树,这本书
中
有详细的解读,在这里我谈谈自己对它的理解。 首先,在之前文章
中
介绍的
红
黑树
,我们把节点看成
红
,黑两色,而这里
红
节点指的是它指向父亲的
链接
是
红
色的,有什么不同?当我们介绍
左
旋,右旋你就会看到。 来看看这套
定义
红
黑树
的规则:
红
链接
均为
左
链接
没有任何一个...
《
算法
Algorithms
第四版
》
红
黑树
学习小结
序言 在2-3查找树
中
的3-结点的表示和代码实现上会比较麻烦,所有使用
红
黑二叉查找树来将二叉查找树和2-3查找树综合起来,实现高效的查找和插入等操作 我们将3-结点的两个键变成两个2-结点,并用一条
红
链接
将其
链接
起来,在形式上满足了二叉查找树,概念上满足2-3查找树。
红
黑树
的另
一种
定义
时含有
红
黑
链接
并满足下列条件的二叉查找树:
红
链接
均为
左
链接
; 没有任何一个结点同时和两条
红
链接
相连; ...
左
倾
红
黑树
普通
红
黑树
:允许一个节点有两个
红
色的子节点,对应2-3-4树
左
倾
红
黑树
:一个节点
只能
有一个
红
色子节点,并且是
左
节点,对应2-3树 在学习完
红
黑树
之后我完全不理解是怎么想到
红
黑树
这
一种
数据结构的,所以我又去看了
算法
第四版
,明白了当
红
黑二叉树是由2-3查找树(B-树)推导来的 接下来学习
红
黑二叉查找树(原理、实现)对相应知识进行总结 1. 2-3查找树 2-3查找树 2.
红
黑二叉查找树 这里所探究...
Java——
红
黑树
红
黑树
1.
定义
首先来理解
红
黑树
可以用来解决什么问题:普通的二叉搜索树在作为数据存储工具的时候,具有可以快速找到一个给定关键字的数据项,并且可以快速地插入和删除数据项等优点。其
中
,二叉搜索树只有当插入的数据是随机数据,插入可快速进行。但当插入的数值是有序的时候,二叉树就会变成非平衡的二叉树,那么它的快速查找、插入、删除指定数据项的能力就消失了。
红
黑树
就可以解决非平衡树的问题,他可以被理解为是
一种
增加了某些特点的二叉搜索树。 维基百科
中
对
红
黑树
的
定义
为:
红
黑树
(英语:Red–black tree)是
一种
自
C++ 语言
64,651
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章