數據結構筆記——哈夫曼樹

目錄

一、帶權路徑長度

二、哈夫曼樹的定義

三、哈夫曼樹的構造

四、哈夫曼編碼

五、總結

一、帶權路徑長度

結點的權:有某種現實含義的數值(如:表示結點的重要性等)

結點的帶權路徑長度:從樹的根到該結點的路徑長度(經過的邊數)與該結點上權值的乘積

樹的帶權路徑長度:樹中所有葉子結點的帶權路徑長度之和

二、哈夫曼樹的定義

在含有n個帶權葉結點的二叉樹中,其中帶權路徑長度(WPL)最小的二叉樹稱爲哈夫曼樹,也稱最優二叉樹

三、哈夫曼樹的構造

給定n個權值分別爲w1,w2,....wn的結點,構造哈夫曼樹的算法描述如下:

1)將這n個結點分別作爲n棵僅含一個結點的二叉樹,構成森林F。

2)構造一個新結點,從F中選取兩棵根結點權值最小的樹作爲新結點的左、右子樹,並且將新結點的權值置位左、右子樹上根結點的權值之和。

3)從F中刪除剛纔選出的兩棵樹,同時將新得到的樹加入F中。

4)重複步驟2)3),直至F中只剩下一棵樹爲止。

注:

1)每個初始結點最終都稱爲葉子結點,且權值越小的結點到根結點的路徑長度越大

2)哈夫曼樹的結點總數爲2n - 1

3)哈夫曼樹中不存在度爲1的結點

4)哈夫曼樹並不唯一,但WPL必然相同且爲最優

四、哈夫曼編碼

固定長度編碼——每個字符用相等長度的二進制表示

ASCII編碼

A——01000001

B——01000010

C——01000011

D——01000100

每個字符用長度爲2的二進制表示

A——00

B——01

C——10

D——11

假設,100題中有80選C,10題選A,8題選B,2題選D

所有答案的二進制長度 = 80*2 + 10*2 + 8*2 + 2*2 = 200bit

可變長度編程——允許對不同字符用不等長的二進制位表示

若沒有一個編碼是另一個編碼的前綴,則稱這樣的編碼爲前綴編碼

哈夫曼樹不唯一——哈夫曼編碼不唯一

C——0

A——10

B——111

D——110

 

五、總結

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章