天天看點

二叉樹(五)——哈夫曼樹與哈夫曼編碼

基本概念

WPL(樹的帶權路徑長度)

若給具有m個葉結點的二叉樹的每個葉結點賦予一個權值,則該二叉樹的帶權路徑長度定義為:

二叉樹(五)——哈夫曼樹與哈夫曼編碼

其中,wi為第i個葉結點被賦予的權值,li為第i個葉結點的路徑長度;例子如下:

二叉樹(五)——哈夫曼樹與哈夫曼編碼

哈夫曼樹的定義

給定一組權值,構造出的具有最小帶權路徑長度的二叉樹稱為哈夫曼樹,如下:

二叉樹(五)——哈夫曼樹與哈夫曼編碼

哈夫曼樹的特點

哈夫曼樹具有如下特點:

1、權值越大的葉結點離根結點越近,權值越小的葉結點離根結點越遠;(這樣的二叉樹WPL最小)

2、無度為1的結點;

3、哈夫曼樹不是惟一的。

哈夫曼樹的構造

哈夫曼樹構造的核心思想如下:

1、對于給定的權值W={w1,w2,…, wm},構造出樹林F={T1,T2,…, Tm},其中,Ti(1≤i≤m)為左、右子樹為空,且根結點(葉結點)的權值為wi的二叉樹;

2、将F中根結點權值最小的兩棵二叉樹合并成為一棵新的二叉樹,即把這兩棵二叉樹分别作為新的二叉樹的左、右子樹,并令新的二叉樹的根結點權值為這兩棵二叉樹的根結點的權值之和,将新的二叉樹加入F的同時從F中删除這兩棵二叉樹;

3、重複步驟2,直到F中隻有一棵二叉樹。

例子如下:

二叉樹(五)——哈夫曼樹與哈夫曼編碼

哈夫曼編碼

二叉樹(五)——哈夫曼樹與哈夫曼編碼

繼續閱讀