最優二叉樹(哈夫曼樹)知識點

2022-03-02 23:25:16 字數 1631 閱讀 5836

路徑:在一棵樹中從乙個結點往下到孩子或孫子結點之間的通路

結點的路徑長度:從根節點到該節點的路徑上分支的數目

樹的路徑長度:樹中每個結點的路徑長度之和

結點的權:給樹中的結點賦予乙個某種含義的值,則該值為該節點的權

結點的帶權路徑長度:結點的路徑長度乘以結點的權

樹的帶權路徑長度(wpl):樹中所有葉子結點的帶權路徑長度(weight path length)

最優二叉樹(哈夫曼樹):帶權路徑長度最小的二叉樹

構造哈夫曼樹:

給定n個權值,則構造出的哈夫曼樹有n個葉子結點,構造過程如下:

1.將w1,w2…wn按從小到大排序,並將他們看做n棵只有乙個結點的樹組成的森林;

2.選出兩個根節點權值最小的樹合併,作為新樹的左右子樹,新樹的根節點權值是左右子樹根節點權值之和

3.從森林中刪除選取的兩棵樹,將新樹加入森林

4.重複2,3,直到只剩一棵樹,所得即為最優二叉樹

例項如下:給定權值構造哈夫曼樹

解:(1) 排序後為w=

取出2,5  

w=取出6,7

w=取出

w=取出

上面的哈夫曼樹的wpl=6x2+7x2+2x3+5x3+9x2=65

哈夫曼樹在編碼中的應用:

在通訊中,經常需要將文字轉換成二進位制串,即編碼。為了使電文**盡可能的短,需要另經常使用的字元採用短的編碼,使用頻率小的字元採用長的編碼。同時,乙個字元的編碼不能包含另乙個字元的編碼,例如a是00,b就不能是001,使用哈夫曼樹就可以很好的實現,

例如a,b,c,d,e的頻率分別是6,7,2,5,9 對應的哈夫曼樹為:

另左子樹的路徑為0,右子樹路徑為1

則a:00    b:01  c:100  d:101  e:11

哈夫曼樹(最優二叉樹)

給定n個權值作為n的 葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小 所謂樹的帶權路徑長度,就是樹中所有的葉結點 的權值乘上其到根結點的路徑長度 稱這樣的二叉樹為最優二叉樹,也稱為哈夫曼樹 huffman tree 哈夫曼樹是帶權路徑長度最短的樹,權值較大的結點離根較近。假設有n個權值,則構造出的...

哈夫曼樹(最優二叉樹)

最優二叉樹 哈夫曼樹 給定n個權值,試構造一棵有n個葉子結點的二叉樹,每個葉子結點帶權為wi。構造出來的二叉樹的形態可以有多個,我們把其中帶權路徑長度wpl最小的二叉樹稱作最優二叉樹或者哈夫曼樹。語言描述 根據給定的n個權值構成n棵二叉樹的集合f 其中每棵二叉樹ti中只有乙個帶權為wi的根結點,其左...

哈夫曼樹 最優二叉樹

差點忘記寫部落格了.哈夫曼樹 其實就是只利用葉子結點來儲存要用資訊的樹,只不過它在構造的時候就擁有了乙個迷人的特性.就是wpl 帶權路徑長度 是最小的.而且還能用這個樹的來為葉子結點中的資訊進行編碼,得出來的各個編碼一定不會相同,並且不會產生混淆的情況.通過哈夫曼樹的特點.實現了根據乙個佇列來建立一...