(数据结构)第五章 二叉树

二叉树

数据结构大致分为两种类型:基于数组的实现和基于链表的实现。

两种结构的特点:

基于数组的实现:通过下标或秩,在常数时间内找到目标对象。插入和删除,需要耗费线性时间。

基于链表的实现:借助引用或位置对象,在常数时间内插入或删除元素。但需要线性时间,对整个结构进行遍历查找。

树的元素之间并不存在天然的直接后继和直接前驱关系,树属于半线性结构。

树是一种分层结构,是其本质属性之一。

5.1 二叉树及其表示

5.2 编码树

5.5 Huffman编码

数据结构的选取与设计:

(1)用BinTree实现PFC树

(2)用Vector实现PFC森林

(3)使用位图结构实现二进制编码串

构建PFC编码树过程:

由每一字符分别构造一棵单节点二叉树,并将他们视作一个森林。

初始森林中的\sum棵树将合成一颗完整的PFC编码树。

将PFC编码树转译为编码表.。

根据待编码字符快速确定与之对应的编码串。

平均编码长度是反应编码效率的重要指标。

真完全树:最优编码树中的叶节点只能出现于最低两层

带权平均编码长度取作编码树的叶节点带权平均深度。

Huffman编码算法

对于字符出现概率已知的任一字符集\sum,都可采用如下算法构造其对应的最优带权编码树

对应于\sum中的每一个字符,分别建立一棵单个节点的树,权重为该字符的频率。这\sum棵树构成一个森林。

选取权重最小的两棵树,创建一个新节点,并分别以这两棵树作为左右子树,如此将其合并为一棵更高的树,其权重取作二者权重之和。选取、合并的过程反复进行,每经过一轮迭代森林中的树就少了一棵。当最终森林仅包含一棵树时,它就是一棵最优带权编码树,构造过程随即完成。

高效的编码算法生成的编码串应该尽可能短。。

猜你喜欢

转载自blog.csdn.net/xyk_hust/article/details/85043659
今日推荐