当前课程知识点:数据结构(下) > 第七章 二叉搜索树 > (c)平衡与等价 > 07C-4 歧义=等价
在前一节我们曾经介绍过
所谓BST 它的本质特征
就是处处局部的顺序性
以及全局的单调性
具体来说 只需要考察
它的中序遍历序列是否是单调的
然而只需考察树的遍历算法
我们就不难发现
结构不尽相同的两棵BST
它们的中序遍历序列有可能是完全雷同的
这也就是我们所说的中序遍历序列的歧义性
在某些场合中
比如中缀表达式的求值计算
这种中序遍历序列的歧义性非常令人生厌
因为我们不得不通过一些办法
来明确地辨析
不同操作符之间的优先级关系
而针对BBST这样的一个问题
歧义性却变成了一个非常重要
同时也是不可或缺的一种性质
以这里所给出的两棵BST为例
不难看出
它们都是由同一组关键码所构成的
而且它们的中序遍历序列是完全一样的
然而反过来 我们也注意到
它们的拓扑结构也不尽相同
比如在这样一个局部
左侧局部子树的树根是19
而在右侧却是16
当然 还可以很容易地举出更多这样的实例
拓扑结构不尽相同
但中序遍历序列却相同的
任何一对这样的BST
也就称作相互等价的BST
等价的BST之间
在拓扑结构上 虽然不尽相同
但也有其独特的规律
这种规律概括起来有两句话
第一 上下可变
比如在这个例子中
19和16的祖先和后代关系
就有可能在两棵树中彼此颠倒
这也可以认为等价的BST
在垂直方向有一定的自由度
然而我们的第二条规律则是左右不能乱
这里的左右自然是指中序遍历序列
确实相对于任何一个节点
居于它右侧的节点
以及居于它左侧的节点之间不能相互混淆
那么在这样一种上下存在一定的调整余地
但左右次序却不得颠倒的规则下
又当如何来实现BST之间的等价转换呢?
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试