1. 程式人生 > >哈夫曼樹 和 樹的帶權路徑長度

哈夫曼樹 和 樹的帶權路徑長度

樹的帶權路徑長度(Weighted Path Length of Tree):定義為樹中所有葉結點的帶權路徑長度之和。
結點的帶權路徑長度:結點到樹根之間的路徑長度與該結點上權的乘積。

哈夫曼樹是一種帶權路徑長度最短的二叉樹,也稱為最優二叉樹。

例:對於給定的一組權值w={1,4,9,16,25,36,49,64,81,100},構造具有最小帶權外部路徑長度的擴充二叉樹,並求出他的的帶權外部路徑長度。

解:1、首先我們對這一組數字進行排序。規則是從小到大排列(題目已排序好)。

      2、在這些數中 選擇兩個最小的數字(哈夫曼樹是從下往上排列的)寫在紙上。如下圖所示

      3、用一個類似於樹杈的“樹枝”連線上兩個最小的數。在頂點處計算出這兩個數字的和 並寫在上面。然後再比較剩下的數字和這個和的大小,再取出兩個最小的數字進行排列

      4、如上圖中30,25的和為55,已經大於36,49.所以這個時候開始有分支,用36,49再構造一個分支,如下圖。

    5、最後將分支合併成一個二叉樹,如下圖

6、這樣,二叉樹結構就構建好了。

帶權外部路徑長度計算;

WPL=2*100 + 3*64 + 2*81 + 4*25 + 2*49 + 2*36 + 5*16 + 6*9 + 7*1 + 7*4 =993

(385的權重為0,216和166權重為1.....)