資料結構哈夫曼樹
阿新 • • 發佈:2021-02-01
資料結構之哈夫曼樹
哈夫曼樹與哈夫曼編碼
Huffman樹,又稱最優樹,嚴格的滿二叉樹,是一類帶權路徑長度最短的樹:
即
W
P
L
=
WPL=
WPL=
假設有n個權值不同的數目,則可以構造一棵含有n個葉子結點的二叉樹,在所有的二叉樹中,僅有帶權路徑長度最小的哪一個二叉樹稱為最優二叉樹或赫夫曼樹。
因此,主要的問題是如何構造哈夫曼樹與實現哈夫曼編碼。
哈夫曼樹構造演算法
即小樹匯大樹,敘述如下:
1)根據給定的n個權值{W1,W2,W3,Wn}構成n顆單節點子樹(集)F={F1,F2,F3,Fn},其中每顆二叉樹Ti中只有一個帶權為Wi的根節點,其左右子樹均為空。
2)在F中選兩顆權值最小的樹作為作為左右子樹構造一棵新的二叉樹,且新二叉樹的節點值為左右節點權值之和。
3)在F中刪除這兩顆樹,同時將新得到的二叉樹加入到F中。
4)重複(2)(3)過程即可。
程式實現:
哈夫曼編碼(字首編碼)
該編碼方式充分考慮了元素概率的因素,實現了報文傳送的快速傳輸。
在赫夫曼樹的基礎上對於左向的結點編碼為‘0’,右向的結點編碼為‘1’;