1. 程式人生 > >C語言資料結構——赫夫曼樹和赫夫曼編碼

C語言資料結構——赫夫曼樹和赫夫曼編碼

1、赫夫曼樹又稱最優樹,是一類帶權路徑長度最短的樹。
2、從樹的一個結點到另一個結點之間的分支構成這兩個結點之間的路徑,路徑上的分支數目稱為路徑長度。樹的路徑長度是從樹根到每個結點的路徑長度之和。
3、結點的帶權路徑長度為從該節點到樹根之間的路徑長度與結點上權的乘積。樹的帶權路徑長度為數中所有葉子結點的帶權路徑長度之和。
這裡寫圖片描述
4、假設有n個權值{w1,w2,…wn},試構造一棵有n個葉子結點的二叉樹,每個葉子結點帶權為wi,其中帶權路徑長度WPL最小的二叉樹稱作最優二叉樹或赫夫曼樹。
這裡寫圖片描述

5、規定赫夫曼樹的左支代表0,右支代表1,則從根結點到葉子結點所經過的路徑分支組成的0和1的序列便為該結點對應字元的編碼,這就是赫夫曼編碼。