首先我們來看我們自己按照哈夫曼樹的構造方法得出的答案:
.小的數放在左邊
.當有重複的權值,也就是我們通過構造得到的樹的權值和我們已知的權值重複的時候,首先使用已知的權值。
如圖:
我們看到20在23的左邊,一般情況下,這樣的樹構造是沒有問題的,但是:
我們構造哈弗曼樹的目的是通訊,通過編碼代替我們想要傳達的值,所以一定要注意,編碼值,也就是標識(類似我們的身份證號,唯一標識),是不允許重複的。
我們在我們自己的解答中可以看到11和23的哈夫曼編碼都是[01];這樣的情況是不允許存在的,所以在這中特定情況下我們需要將23放到20的左邊來解決這個問題。
也就是答案所給出的如圖:
這樣我們就不會出現同乙個身份證號對應不同的人了。
哈弗曼編碼 哈弗曼樹
哈弗曼編碼是依賴於字元使用頻率來建立的一種編碼,通過把使用頻率低的字元分配相對較多的01編碼,而使用頻率高的分配相對較低的01編碼,來建立最小的帶權路徑長度的樹,來最大化的獲得編碼儲存空間的一種編碼規則。這個樹稱為哈弗曼樹,也稱為最優二叉樹。這樣可以確定每乙個字元的編碼不可能成為其他字元編碼的坐子串...
哈弗曼樹與哈弗曼編碼(實現)
歷史背景 1951年,霍夫曼在mit攻讀博士學位,他和修讀資訊理論課程的同學得選擇是完成學期報告還是期末考試。導師robert fano出的學期報告題目是 查詢最有效的二進位制編碼。由於無法證明哪個已有編碼是最有效的,霍夫曼放棄對已有編碼的研究,轉向新的探索,最終發現了基於有序頻率二叉樹編碼的想法,...
資料結構之哈弗曼樹與哈弗曼編碼
一.哈弗曼樹和哈弗曼編碼先知 哈弗曼樹是二叉樹中一種特殊的樹,也被稱為最優二叉樹。其通過某種規則 權值 來構造出一哈夫曼二叉樹,在這個二叉樹中,只有葉子節點才是有效的資料節點,其他的非葉子節點是為了構造出哈夫曼而引入的!哈夫曼編碼是通過哈夫曼樹進行的一種編碼,一般情況下,以字元 0 與 1 表示。編...