哈夫曼树 带权路径
樹的帶權路徑長度
(Weighted Path Length of Tree,簡記為WPL)
一般的,我們是可以用常規的構造哈夫曼樹求帶權路徑長度。
計算結點的帶權路徑長度:結點到樹根之間的路徑長度與該結點上權的乘積。
帶權路徑長度WPL(Weighted Path Length)最小的二叉樹,也稱為最優二又樹。
在這里簡單舉個例子說一下:
題目:
給定6個字符(a,b,c,d,e,f),它們的權值集合W =(2,3,4,7,8,9),試構造關于W的一棵哈夫曼樹,求其帶權路徑長度WPL。
解:根據題意構造關于W的哈夫曼樹如1圖所示:
那么其帶權路徑長度WPL=(9+7+8)×2+4×3+(2+3)×4=80。
(結點到樹根之間的路徑長度與該結點上權的乘積)
哈夫曼樹
構造哈夫曼樹的辦法是:在W中選出兩個權小結點,并同時計算出它們的和,如果兩個數的和正好是下一步的兩個最小數的其中的一個,那么這個樹直接往上生長就可以了,如果這兩個數的和比較大,不是下一步的兩個最小數的其中一個,那么就并列生長。
哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點的層數)。樹的路徑長度是從樹根到每一結點的路徑長度之和,記為WPL=(W1L1+W2L2+W3L3+…+WnLn),N個權值Wi(i=1,2,…n)構成一棵有N個葉結點的二叉樹,相應的葉結點的路徑長度為Li(i=1,2,…n),可以證明哈夫曼樹的WPL是最小的。
總結
- 上一篇: Java JVM内存模型
- 下一篇: 应用层协议