当前课程知识点:数据结构(下) > 第八章 高级搜索树(下) > (xa2)红黑树:结构 > 08XA2-1 定义规则
同学们好 接下来我们就来看看所谓的红黑树
到底是如何定义的 以及按照这种定义它是否的确是BBST
实际上 在其研究和发展的历史过程中
红黑树曾经有过不同的名称
也曾从不同的角度给出过等价的定义
那么这里呢 我们只给出其中之一
为了便于讲解甚至实现红黑树
我们需要对红黑树的模型 做一个小小的扩充
具体来说 与B树的处理手法一样
我们需要通过增设一系列的外部节点
保证红黑树是所谓的真二叉树
也就是说 其中的每个内部节点都有2个孩子
尽管其中之一 甚至两个都有可能是我们新增的外部节点
我们这里对红黑树的定义 可以概括为4句话
首先如果红黑树非空 那么根节点必然为黑
其次我们刚刚统一增加的所有外部节点 也是黑色的
尽管它们实际上根本不必存在
如果将红黑树比作人 那么这两条就可以概括为
他戴的帽子以及穿的靴子 都是黑的
那么其余的节点呢
实际上只有红节点才需要有所约束
它只能有黑色的孩子
这条约定虽然简明 但实际上蕴含了很多性质
比如不可能出现同时为红的父子两代
因此这条规则更具操作性的一种等效表述为
对于红节点来说 无论是它的孩子还是父亲都必须是黑的
稍后我们就会看到 这条规则
对于控制红黑树的深度 是极其重要的
而接下来的这条呢 可以认为是旨在控制红黑树的平衡性
因为这里要求 在从任何一个外部节点通往树根的
这条唯一的路径上 黑节点的数目必然都是一样的
听到这里 你或许会感到非常困惑
是的 如此约定的一系列规则
到底对应于一棵什么样的树呢
这些规则背后又有什么更为简明的用意和原理呢
我们不妨来通过一个实例 先回答第一个问题
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试