用一个例题来解释自己理解的哈夫曼编码
例:现有一个由5个字母组成的34个符号的字符串:
BABAB-ECADA-EABBB-BABEB-EDDAB-EEEBC-DEDE 做出五个字母哈夫曼编码
将他们出现的频率由小到大排列:
C:D:A:E:B = 2:5:7:9:11
字母 | 出现频率(有小到大) |
---|---|
C | 2 |
D | 5 |
A | 7 |
E | 9 |
B | 11 |
1.每次将出现频率最小的两个字母作为子节点
第一次
生成新节点暂定为n1,n1的频率为7。现在节点排序为n1:A:E:B
第二次
将出现频率最小的两个字母作为子节点,得到下图
生成新节点暂定为n2,n2的频率为14。现在节点排序为E:D:n2
第三次
将出现频率最小的两个字母作为子节点,得到下图
生成新节点暂定为n3,n3的频率为20。现在节点排序为n2:n3
第四次
将出现频率最小的两个字母作为子节点,得到下图
现在已经画出了哈夫曼树。
2.将哈夫曼树左分支置为0,右分支置为1,记录各字母编码
各字母编码
字母 | 哈夫曼编码 |
---|---|
A | 01 |
B | 11 |
C | 000 |
D | 001 |
E | 10 |
至此便求出五个字母的哈夫曼编码