優先順序佇列的應用 求哈夫曼樹的帶權路徑長度

2021-10-25 16:14:30 字數 609 閱讀 3368

哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。

需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出哈夫曼樹的帶權路徑長度(wpl)。

輸入格式:

第一行輸入乙個數n,第二行輸入n個葉結點(葉結點權值不超過1000,2<=n<=1000)。

輸出格式:

在一行中輸出wpl值。

輸入樣例:

5

1 2 2 5 9

輸出樣例:

**:

#include

#include

using

namespace std;

intmain()

int answer=0;

//儲存最後答案

while

(mypriority.

size()

>1)

printf

("%d\n"

,answer);}

return0;

}

小結:

哈夫曼樹的最短帶權路徑長度除了按照公式求之外,其實也等於生成的中間結點的值之和,此題採用了後者求之。

優先佇列 哈夫曼樹

哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和的最小值。輸入有多組資料。每組第一行輸入乙個數n,接著輸入n個葉節點 葉節點權值不超過100,2 n 1000 輸出權值。示例1 ...

哈夫曼樹 哈夫曼樹求帶權路徑和

首先要了解哈夫曼樹的一些概念 帶權路徑 每個葉子結點都有權值,對於某葉子結點來說,它的帶權路徑就是 結點權值 從根節點到該結點的路徑長度 哈夫曼樹的構造方法 兩個權值最小的葉子結點作為兄弟去構成乙個非葉節點。該父親非葉節點的權值 二者之和 之前我只知道這些基本概念,求帶權路徑和的時候也只是 數數 數...

哈夫曼樹的應用 哈夫曼編碼

include include include 樹結點定義 typedef struct htnode,huffmantree static char n 100 用於儲存正文 哈弗曼編碼,char型二級指標 typedef char huffmancode 封裝最小權結點和次小權結點 typede...