设计哈夫曼编码分为两步:
一、构建哈夫曼树
假设用于通信的电文由8个字母组成,字母在电文中出现的频率分别为0.07、0.19、0.02、0.06、0.32、0.03、0.21、0.10。
首先为了简洁我们将这些频率重新书写为7、19、2、6、32、3、21、10,此时将电文出现的频率理解为权,并将其以升序排列,得到2、3、6、7、10、19、21、32,将这组数据中较小的两个数构造出一个二叉树,并将这两个数的权相加得到形成的二叉树的权,得到新的数组5、6、7、10、19、21、32,重复这一过程,如图:
二、设计哈夫曼编码
将哈夫曼树的任意一个节点与他的左孩子之间的连线标0,与他右孩子之间的连线标1,然后按照路径将哈夫曼编码读出即可,如图:
例如2(频率0.02的字母)的哈夫曼编码为:00000
32(频率为0.32的字母)的哈夫曼编码为:01