目录
5.7哈夫曼树及其运用
一.哈夫曼树的基本概念
(1)路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径
(2)结点的路径长度:两结点间路径上的分支数
(3)树的路径长度:从树根到每一个结点的路径长度之和。记作:TL
结点数目相同的二叉树中,完全二叉树是路径长度最短的二叉树
(4)权:将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权
(5)点的带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘积
(6)树的带权路径长度:树中所有叶子结点的带权路径长度之和
(7)哈夫曼树概念
- 最优树 带权路径长度最短的树
“带权路径长度最短”是在“度相同”的树中比较而得的结果,因此有最优二叉树、最优三叉树之称等等。
- 最优二叉树 带权路径长度最短的二叉树
二.哈夫曼树的构造算法
1.贪心算法:构造哈夫曼树时首先选择权值小的叶子结点
2.哈夫曼算法(构造哈夫曼树的方法)
三.哈夫曼树构造算法的实现
1.顺序存储结构——一维结构数组
三.哈夫曼编码
1.方法
(1)统计字符集中每个字符在电文中出现的平均概率(概率越大,要求编码越短),频率可以作为权值
(2)利用哈夫曼树的特点:权越大的叶子离根越近;将每个字符的概率值作为权值,构造哈夫曼树。则概率越大的结点,路径越短。
(3)在哈夫曼树的每个分支上标上0或1:结点的左分支标0,右分支标1;把从根到每个叶子的路径上的标号连接起来作为该叶子代表的字符的编码
2.算法->哈夫曼编码