严蔚敏视屏 笔记24
如何构造最优树
以二叉树为例:
(1)根据给定的n个权值构造n棵二叉树的集合F,其中每棵二叉树中均只含一个带权值为wi的根结点,其左右子树为空树
(2)在F中选取其根结点的权值为最小的两棵二叉树,分别作为左右子树构造一棵新的二叉树并置这棵新的二叉树根结点的权值为其左右子树根结点的权值之和
(3)从F中删去这两棵二叉树,同时加入刚生成的新树
(4)重复(2)(3)两步直至F中只含有一棵树为止
前缀编码
任何一个字符的编码都不是同一字符集中另一字符的编码的前缀
等长码 字符出现概率相同的话合适
不等长码 翻译时可能产生二义性 所以规定任何一码不为其他码的前缀
哈夫曼编码是一种最优前缀编码 左子树取0右子树取1
本章小结:
1.熟练掌握二叉树的结构特性,了解相应证明方法
2.熟悉二叉树的各种存储结构的结构特点及适用范围
3.掌握各种遍历策略的递归和非递归算法,灵活运用遍历算法实现二叉树的其他操作,层次遍历是按另一种搜索策略进行的遍历
4.理解二叉树线索化的实质是建立结点与其在相应序列中的前驱或后继之间的直接联系,熟练掌握二叉树的线索化过程
5.熟悉树的各种存储结构及其特点,掌握树和森林与二叉树的转换方法
6.学会编写实现树的各种操作的算法
7.了解最优树的特性,掌握建立最优树和哈夫曼编码的方法
建议练习题:
6.12 6.19 6.20 6.22 6.24
第七章 图
7.1 抽象数据类型图的定义
ADT Graph {
数据对象V:V是具有相同特性的数据元素的集合,称为顶点集
数据关系R:R={VR}
VR={<v,w>|v,w∈V且P(v,w),<v,w>表示从v到w的弧,谓词P(v,w)定义了弧<v,w>的意义或信息}
}
弧头 顶点v
弧尾 顶点w
弧 <v,w>表示从顶点v到顶点w的一条弧
有向图 由顶点集和弧集构成的图
边 (v,w)为顶点v和顶点w之间存在的一条边
无向图 由顶点集和边集构成的图
弧或边带权的图分别称作有向网或无向网
设G=(V,{VR}),G'=(V',{VR'}),且V'属于V,VR'属于VR
称G'为G的子图
图中有n个顶点,e条边
完全图 含有e=n(n-1)/2条边的无向图
含有e=n(n-1)条弧的有向图称为完全有向图
稀疏图 若边或弧的个数e<nlogn
稠密图 若边或弧的个数e>=nlogn
若顶点v、w之间存在一条边则v、w互为邻接点,边(v,w)和顶点v、w相关联
和顶点v关联的边的数目定义为边的度
对有向图来说分为出度和入度,度(TD)=出度(OD)+入度(ID)
路径 两顶点之间存在一顶点序列每相邻两顶点之间一定有一条边
路径长度 路径上边的数目
简单路径 序列中的顶点不重复出现
简单回路 若两顶点重合(u=w)
连通图 图中任意两顶点之间都有路径相通
连通分量 若无向图为非连通图,则图中各个极大连通子图称作连通分量
强连通图 有向图任意两个顶点之间都存在一条有向路径
否则各个强连通子图称作其强连通分量
生成树 连通图的极小连通子图
生成森林 非连通图的各个连通分量的生成树集合