九度OJ 1172 哈夫曼樹

2021-08-27 00:21:40 字數 1115 閱讀 9595

九度oj-1172-哈夫曼樹

哈夫曼樹

(huffman tree)

:給定n

個權值作為

n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹為最優二叉樹,即哈夫曼樹

這題可以建樹,也可以不建樹。

建樹:

#include#include#include#define maxvalue 0x7fffffff

struct huffman

list[5000];

int main()

int main()

zimu[30];

struct cam2

list[60];

void init()

void huffmantree()

; //26個字母的頻度

for(i=0;i<60;i++)

list[i].parent=list[i].lchild=list[i].rchild=-1;

for(i=0;i<26;i++)

list[i].weight=pindu[i];

for(i=0;i<25;i++)

int main()

{ int i,j;

int ans,len;

char str[1000];

int k1,k2,flag;

printf("welcome to cambridgeacm\n");

init();

huffmantree();

huffmanbianma();

printf("輸入1時執行編碼\n");

printf("輸入2時執行解碼\n");

while(scanf("%d",&ans)!=eof)

{ switch(ans)

{ case 1:

{printf("請輸入一段字串\n");

九度OJ1172 哈夫曼樹

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

九度OJ 1172 哈夫曼樹

由於建立的哈夫曼樹不唯一,所以機試多考察哈夫曼樹的帶權路徑長度和,如此題。此問題最終轉化為利用堆模擬建樹過程,求出非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 無需作出哈夫曼樹的具體結構體 收穫如下 關於哈夫曼樹 該樹非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 關於堆排序 堆排序建堆o n log...

九度OJ 1172 哈夫曼樹

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