資料結構筆記 哈夫曼樹

2021-10-07 02:54:57 字數 1717 閱讀 6273

目錄

一、帶權路徑長度

二、哈夫曼樹的定義

三、哈夫曼樹的構造

四、哈夫曼編碼

五、總結

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

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

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

在含有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

可變長度程式設計——允許對不同字元用不等長的二進位制位表示

若沒有乙個編碼是另乙個編碼的字首,則稱這樣的編碼為字首編碼

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

資料結構 哈夫曼樹 哈夫曼編碼

哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...

哈夫曼編碼 哈夫曼樹 (資料結構)

哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...

資料結構 哈夫曼樹

哈夫曼樹是二叉樹的一種。被稱為最優二叉樹。實際應用中最重要的是帶權路徑長度。樹的路徑長度 樹中每個結點的路徑長度之和。權 附加在樹節點上,表示出現的概率。樹的帶權路徑長度 所有葉子結點帶權長度之和。看例項 的結點路徑長度 從d到 a的路徑,共走了兩條邊,所以為2。樹中的葉子結點有 d,e和 f。結點...