數(shù)據(jù)結(jié)構(gòu)與算法_哈夫曼編碼




舉個(gè)構(gòu)建哈夫曼樹(shù)的例子:

1)選擇沒(méi)有雙親權(quán)值最小的兩個(gè)結(jié)點(diǎn),t1,t2;
2) t1,t2做為左右子樹(shù)構(gòu)建一顆新樹(shù);
3)新樹(shù)的根為t1,t2之和;
哈夫曼樹(shù)

采用順序存儲(chǔ)的方式:

1.首先初始化一個(gè)數(shù)組:其中 -1 表示數(shù)組的下標(biāo),-1表示不存在;

2.然后開(kāi)始依次尋找兩個(gè)最小的結(jié)點(diǎn),構(gòu)建新樹(shù),重新填表;
構(gòu)建哈夫曼樹(shù)其實(shí)就是填表,哈夫曼編碼其實(shí)就是讀表。
哈夫曼帶權(quán)路徑長(zhǎng)度

WPL=每個(gè)葉子的權(quán)值*該葉子到根的路徑長(zhǎng)度之和
哈夫曼樹(shù)帶權(quán)路徑長(zhǎng)度之和=各新生成結(jié)點(diǎn)的權(quán)值之和,可以看作最終的編碼長(zhǎng)度。
標(biāo)簽: