1. 哈夫曼(huffman)編碼是哈夫曼樹的乙個應用。
2. 哈夫曼樹又稱為最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的相對值乘上其到根結點的路徑和權值。
3. 影象jpg就是利用了哈夫曼編碼。
4. 哈夫曼樹是最優二叉樹,子樹有左右次序之分。
5. 哈夫曼樹的形態不是唯一的,但是它的帶權路徑長度wpl是唯一的。
6. 哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。
7. 路徑:從乙個結點往下可以達到孩子或孫子結點之間的通路,稱為路徑。通路中分支的數目為路徑長度。若規定根結點的層數為1,則從根結點到第l層結點的路徑長度為l-1。
8. 結點的權:樹結點中有些某種含義的數值,稱為結點的權。結點的帶權路徑長度為:從根結點到該結點之間的路徑長度與該結點的權的乘積。
10. 樹的帶權路徑長度為所有葉子結點的帶權路徑長度之和,記為wpl。
11. 哈夫曼樹是wpl最小的二叉樹。
12. 有4個結點,權值分別為7,5,2,4,構造此4個結點為葉子結點的哈夫曼樹:
13. 滿二叉樹不一定是哈夫曼樹。
14. 給定n個權值,構造哈夫曼樹的過程:
(1)將權值構成森林f。
(2)從f中選取兩個根結點權值最小的樹作為左右子樹構造新的二叉樹。置新的二叉樹的根結點為左右子樹根結點的權值之和。
(3)從森林中刪除已加入的子樹。
(4)重複以上步驟,直至森林中只剩一棵樹。
15. 哈夫曼樹中權越大的葉子離根越近。
16. 具有相同帶權結點的哈夫曼樹不唯一。
17. 包含n個葉子結點的哈夫曼樹共有2n-1個結點。
18. 哈夫曼編碼可以用於資料檔案壓縮。
19. 用二叉樹表示二進位制。以電文中的字元作為葉子結點構造二叉樹。將二叉樹中結點引向其左孩子分支記0, 引向其右孩子分支記1,每個字元編碼即為從根到每個葉子的路徑上得到的0,1序列。
如:
編碼: a:0, c:10,b:110,d:111
20.
例:如果需傳送的電文為 『abaccda』,即:a, b, c, d
的頻率(即權值)分別為 0.43, 0.14, 0.29, 0.14,試構造哈夫曼編碼。
編碼: a:0, c:10, b:110, d:111 。電文 『abaccda』 便為 『0110010101110』(共 13 位)。
筆試例題:
1. 設一組權值集合 w= , 要求根據這些權值構造一棵哈夫曼樹,則這棵哈夫曼樹的帶權路徑長度為是多少?
答案:229, wpl=16x2+17x2+14x3+15x3+9x3+6x4+2x5+3x5=229
參與資料:
哈夫曼樹與哈夫曼編碼
在一般的資料結構的書中,樹的那章後面,著者一般都會介紹一下哈夫曼 huffman 樹和哈夫曼編碼。哈夫曼編碼是哈夫曼樹的乙個應用。哈夫曼編碼應用廣泛,如 jpeg中就應用了哈夫曼編碼。首先介紹什麼是哈夫曼樹。哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的...
哈夫曼樹與哈夫曼編碼
哈夫曼樹是一種簡單的樹結構,建樹過程如下 給出一組資料,不斷選擇最小的兩個數,並用兩個數的和作為它們的parent節點,再從資料中刪除這兩個數,將兩個數的和加入資料中,直到所有的資料都被加入樹結構,形成一顆樹。這顆樹的所有非葉子節點都有兩個child,兩個child的值的和則是這個節點的值,根節點是...
哈夫曼樹與哈夫曼編碼
1 什麼是哈夫曼樹 談到哈夫曼樹,需要了解樹的路徑長度 樹的帶權路徑長度和最優二叉樹的概念。1 樹的路徑長度 樹的路徑長度是從樹根到樹中每一結點的路徑長度之和。在結點數目相同的二叉樹中,完全二叉樹的路徑長度最短 2 樹的帶權路徑長度 weighted path length of tree,簡記為w...