哈夫曼樹的相關定義
- 從樹上一個結點到另一個結點之間的分支構成這兩個結點之間的路徑,路徑上的分支數目(邊的數量)稱為路徑長度
- 樹中的結點常常被賦予一個表示某種意義的數值,稱為該節點的權
- 從樹的根到一個結點的路徑長度與該節點上權值的乘積被稱為該節點的帶權路徑長度
- 樹中所有的葉節點的帶權路徑長度之和被稱為該樹的帶權路徑長度,記為
\[ WPL = \sum_{i=1}^{n}w_{i}l_{i}
\]
在含有n個帶權葉節點的二叉樹中,帶權路徑長度WPL最小的二叉樹被稱為哈夫曼樹,也稱為最有二叉樹
哈夫曼樹的構造
哈夫曼樹的性質
哈夫曼編碼
具有n個不同權值的葉節點的哈夫曼樹的形狀一定是唯一的;這句話是錯的,因為我們任意交換左右子樹,得到的新樹也是哈夫曼樹
例題
下列編碼方案不屬於哈夫曼編碼的是:()
A 000,001,010,011,1
B 0000,0001,001,01,1
C 000,001,01,10,11
D 00,100,101,11
解析:四個選項都滿足的字首碼的定義,但是哈夫曼編碼的每個元素都可以等價為哈夫曼樹中的葉節點,如果我們畫出哈夫曼樹的話,會發現01這個葉子結點沒有被編碼