只要會構造哈夫曼樹,哈夫曼編碼特別簡單,一眼就能看出來。方法如下:
首先看下面題目
已知字符集{ a, b, c, d, e, f },若各字符出現的次數分別爲{ 6, 3, 8, 2, 10, 4 },則對應字符集中各字符的哈夫曼編碼可能是:
A,00, 1011, 01, 1010, 11, 100
B,00, 100, 110, 000, 0010, 01
C,10, 1011, 11, 0011, 00, 010
D,0011, 10, 11, 0010, 01, 000
答案:A
解題步驟
一,先將這串數字構造爲哈夫曼樹
其實題目中,前半部分的字母已經不用看了,因爲構造哈夫曼樹正常是比大小,而這裏比較出現次數大小。
排序爲2,3,4,6,8,10
哈夫曼樹爲
二,將每個結點左右子樹設爲0,1,如下
三,將從頭結點到此結點數合起來即爲哈夫曼編碼
此時可以得到題目中幾個次數的字符集,即爲對應字符的哈夫曼編碼
- 2->1010
- 3->1011
- 4->100
- 6->00
- 8->01
- 10->11
所以各字符出現的次數分別爲{ 6, 3, 8, 2, 10, 4 },則對應字符集中各字符的哈夫曼編碼可能是:00, 1011, 01, 1010, 11, 100