1. 赫夫曼树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用。
基本概念:
1. 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。
结点的路径长度:两结点间路径上的分支数。、
(b) 从 A 到 B, C, D, E, F, G,
H, I 的路径长度分别为
1, 1, 2, 2, 2, 2, 3, 3。
树的路径长度:从树根到每一个结点的路径长度之和。记作:TL
TL(a)=0+1+1+2+2+3+3+4+4=20
TL(b)=0+1+1+2+2+2+2+3+3=16
完全二叉树是路径长度最短的二叉树。
权:将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。
结点的带权路径长度:从根结点到该结点之间的路径长度与该结点的权的乘积。
树的带权路径长度:树中所有叶子结点的带权路径长度之和,记作:
哈夫曼树:最优树
带权路径长度 (WPL) 最短的树
哈夫曼树:最优二叉树
带权路径长度 (WPL) 最短的二叉树
哈夫曼树特点:
1. 满二叉树不一定是哈夫曼树
2. 哈夫曼树中权越大的叶子离根越近
3.具有相同带权结点的哈夫曼树不惟一
如何构造哈夫曼树?
1.构造森林全是根
2.选用两小造新树
3.删除两小添新人
4.重复 2、3 剩单根
例:有5 个结点 a, b, c, d, e,权值分别为 7, 5, 5, 2, 4,构造哈夫曼树。
例:如果需传送的电文为 ‘ABACCDA’,即:A, B, C, D 的频率(即权值)分别为 0.43, 0.14, 0.29, 0.14,试构造哈夫曼编码。
编码 A:0
C:10
B:110
D:111
则电文 ‘ABACCDA’ 便为 ‘0110010101110’(共 13 位)。
例:如果需传送的电文为 ‘ABCACCDAEAE’,即:A, B, C, D, E 的频率(即权值)分别为
0.36, 0.1, 0.27, 0.1, 0.18,试构造哈夫曼编码
编码:A:11
C:10
E:00
B:010
D:011
则电文 ‘ABCACCDAEAE’ 便为 ‘110101011101001111001100’
(共 24 位,比 33 位短)。
权值大的放在右子树
哈夫曼树的性质:
1.包含 n 棵树的森林要经过 n–1 次合并才能形成哈夫曼树,共产生 n–1 个新结点
2.包含 n 个叶子结点的哈夫曼树中共有2n – 1 个结点。
3.哈夫曼树的结点的度数为 0 或 2, 没有度为 1 的结点