1. 程式人生 > 其它 >資料結構哈夫曼樹

資料結構哈夫曼樹

技術標籤:雜湊查詢演算法資料結構演算法

資料結構之哈夫曼樹

哈夫曼樹與哈夫曼編碼

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’;