哈弗曼樹就是每回將2個最小的並1個。
過程大約如下:
8,2,5,3,2,17,4
2+2=4
3,4,4,5,8,17
3+4=7
4,5,7,8,17
4+5=9
7,8,9,17
7+8=15
9,15,17
9+15=24
17,24
17+24=41
這個樹大概是這樣的,分號是某個點的兩個子節點寫完了的意思,意會下:
41
24 17
15 9;
7 8; 4 5;
3 4; 2 2;
哈弗曼樹的形態是不壹定唯壹的
因此這個也是可以的
41
24 17
15 9;
7 8; 4 5;
3 4;
2 2;
她們的帶權路徑長度分別是
3*4+4*4+8*3+2*4+2*4+5*3+17*1=100
3*4+2*5+2*5+8*3+4*3+5*3+17*1=100
都是帶全路徑長度最短的生成樹
擴展資料:
簡介
在計算機數據處理中,哈夫曼編碼使用變長編碼表對源符號(比如文件中的1個字母)進行編碼,其中變長編碼表是通過壹種評估來源符號出現機率的方法得到的,出現機率高的字母使用較短的編碼,反之出現機率低的則使用較長的編碼,這便使編碼之後的字符串的平均長度、期望值降低,從而達到無損壓縮數據的目的。
哈夫曼編碼的起源:
哈夫曼編碼是 1952 年由 David A. Huffman 提出的壹種無損數據壓縮的編碼算法。哈夫曼編碼先統計出每種字母在字符串裏出現的頻率,根據頻率建立壹棵路徑帶權的二叉樹,也就是哈夫曼樹,樹上每個結點存儲字母出現的頻率,根結點到結點的路徑即是字母的編碼,頻率高的字母使用較短的編碼,頻率低的字母使用較長的編碼,使得編碼後的字符串占用空間最小。
百度百科-哈夫曼樹