软件设计师中级-哈夫曼编码解题

39 阅读1分钟
  1. 若a,b,c,d,e,f的频率分别为45,13,12,16,9,5。若采用哈夫曼编码,则face对应的编码为:

    第一步:按频率进行排序:5(f),9(e),12(c),13(b),16(d),45(a)

    将频率最小的两个数相加,然后形成新的排序:

5(f)+9(e) = 14
新的排序:
12(c) | 13(b) | 14 | 16(d) | 45(a)
同上,找出最小的两个数相加,重新排序
12(c) + 13(b) = 25
新的排序:
14 | 16(d) | 25 | 45(a)
最小相加:
14 + 16(d) = 30
新的排序:
25 | 30 | 45
最小相加:
25 + 30 = 55
还剩两个数(45 55),没有排序必要了,相加为100.
此时,我们开始构造哈夫曼树,最后相加的结果就是根节点。

从根节点画出哈夫曼树 小数在左,大数在右

image.png 左子树为0,右子树为1,则face的哈夫曼编码为: f:1100 a:0 c:100 e:1101 face:1100 0 100 1101 如果对你有帮助,点赞、收藏+关注