赫夫曼编码长度计算问题?

例题:一组字符(a,b,c,d)在文中出现的次数分别为(7,6,3,5),字符'd'的哈夫曼编码的长度为?

题解:

首先构造huffman树
每一步都将所有数字排序
方法如下:
1:
3 5 6 7
2:
6 7 8
/ \
3 5
3:
8 13
/ \ / \
3 5 6 7
4:
21
/ \
8 13
/ \ / \
3 5 6 7
所以构造哈夫曼树如图
7 6 3 5 分别对应a b c d
如果左边为0 ,右边为 1 ,则他们编码分别为:
a 11
b 10
c 00
d 01
长度为2

例题2:

赫夫曼编码长度计算问题?_第1张图片

这样编码出来为 
A: 0 1bit 
B: 10 2bit 
C: 110 3bit 
D: 111 3bit 
所以中的编码位数就是出现次数×编码bit 
1×4+2×3+3×2+3×1=19 
这个就是带权路径长度,因为出现的次数就是权重,编码长度就是节点到根节点的层数, 

你可能感兴趣的:(#,赫夫曼编码,ACM)