哈夫曼樹的帶權(quán)路徑長度是什么?
1.樹的路徑長度
樹的路徑長度是從樹根到樹中每一結(jié)點(diǎn)的路徑長度之和。在結(jié)點(diǎn)數(shù)目相同的二叉樹中,完全二叉樹的路徑長度最短。
2.樹的帶權(quán)路徑長度(Weighted Path Length of Tree,簡記為WPL)
結(jié)點(diǎn)的權(quán):在一些應(yīng)用中,賦予樹中結(jié)點(diǎn)的一個(gè)有某種意義的實(shí)數(shù)。
結(jié)點(diǎn)的帶權(quán)路徑長度:結(jié)點(diǎn)到樹根之間的路徑長度與該結(jié)點(diǎn)上權(quán)的乘積。
樹的帶權(quán)路徑長度(Weighted Path Length of Tree):定義為樹中所有葉結(jié)點(diǎn)的帶權(quán)路徑長度之和,通常記為:
其中:
n表示葉子結(jié)點(diǎn)的數(shù)目
wi和li分別表示葉結(jié)點(diǎn)ki的權(quán)值和根到結(jié)點(diǎn)ki之間的路徑長度。
樹的帶權(quán)路徑長度亦稱為樹的代價(jià)。
3.最優(yōu)二叉樹或哈夫曼樹
在權(quán)為wl,w2,…,wn的n個(gè)葉子所構(gòu)成的所有二叉樹中,帶權(quán)路徑長度最?。创鷥r(jià)最?。┑亩鏄浞Q為最優(yōu)二叉樹或哈夫曼樹。
【例】給定4個(gè)葉子結(jié)點(diǎn)a,b,c和d,分別帶權(quán)7,5,2和4.構(gòu)造如下圖所示的三棵二叉樹(還有許多棵),它們的帶權(quán)路徑長度分別為:
(a)WPL=7*2+5*2+2*2+4*2=36
?。╞)WPL=7*3+5*3+2*1+4*2=46
?。╟)WPL=7*1+5*2+2*3+4*3=35
其中(c)樹的WPL最小,可以驗(yàn)證,它就是哈夫曼樹。
注意:
?、?葉子上的權(quán)值均相同時(shí),完全二叉樹一定是最優(yōu)二叉樹,否則完全二叉樹不一定是最優(yōu)二叉樹。
?、?最優(yōu)二叉樹中,權(quán)越大的葉子離根越近。
③ 最優(yōu)二叉樹的形態(tài)不唯一,WPL最小
怎么求哈夫曼的帶權(quán)路徑長度
【問題描述】
已知輸入兩行正整數(shù),第二行正整數(shù)之間用空格鍵分開,請(qǐng)建立一個(gè)哈夫曼樹,以輸入的數(shù)字為葉節(jié)點(diǎn),求這棵哈夫曼樹的帶權(quán)路徑長度。
【輸入形式】
首先第一行為輸入正整數(shù)的個(gè)數(shù),然后接下來的一行正整數(shù),代表葉結(jié)點(diǎn),正整數(shù)個(gè)數(shù)不超過1000個(gè)
【輸出形式】
輸出相應(yīng)的權(quán)值
【樣例輸入】
5
4 5 6 7 8
【樣例輸出】
69
關(guān)于哈夫曼樹——
1、 路徑長度
從樹中一個(gè)結(jié)點(diǎn)到另一個(gè)結(jié)點(diǎn)之間的分支構(gòu)成兩個(gè)結(jié)點(diǎn)之間的路徑,路徑上的分支數(shù)目稱做路徑長度。
1、 樹的路徑長度
路徑長度就是從樹根到每一結(jié)點(diǎn)的路徑長度之和。
評(píng)論