当前课程知识点:数据结构(下) > 第八章 高级搜索树(下) > (xa1)红黑树:动机 > 08XA1-3 关联性
是的 对于每一组相邻的历史快照而言
后者都是在前者的基础上做过相对而言少量的更新而得的
也就是说 绝大部分的数据对象 在二者之中都是相同的
二者的差异只是非常非常小的一部分
因此 我们就自然的可以改用这样一种策略
也就是大量的元素都作共享
只有发生变化的那少量的数据元素我们才需要进行更新
实际上只要我们的实现方法得当
完全可以将相邻版本之间的差异量 控制在logn的范围
比如对于BBST而言 这就是一种可行的实现方法
在这幅图中 每一条红线 都对应于一个共享
比如这条红线就意味着 它所指的节点1既出现在前一个版本中
同时也出现在后一个版本中
尽管在两个版本中 它的父亲不同
但是作为数据元素 它就是它
类似的 这条红线也意味着节点2同时被1号和2号版本所共享
你可能也注意到 其中还有一些蓝色的虚线
没错 我想你已经猜到了
它们所指示的就是在相邻版本之间的更新量
也是我们不得不花费空间来进行存储的量
好在这个量可以控制在极低的水平
比如这条蓝线就意味着
尽管节点8和节点8'对应于同一个数据对象
但是在前和后两个版本中 它们的父节点已经发生了变化
因此在新的快照中我们不得不为它另存一个副本
类似的 这条蓝线也意味着从7到7'的更新
而这条蓝线则示意着节点6需要更新至6'
以及节点5需要更新至5'
当然这类高级结构已经超出了我们这门课的范围
如果你对此感兴趣
敬请关注邓老师稍后将要推出的另一门算法课程 计算几何
当然 你也可能并不满足于此
比如我们能否将BBST前后版本的空间差异控制在O(1)的范围呢
如果这样的话 整体的空间复杂度
将进一步优化至n+h 而不是h*logn
好消息是 只要方法得当 这也是可以做到的
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试