哈弗曼樹的建立
帶權路徑長度的計算
#include#include#include#include#include using namespace std;
typedef structhtnode, *huffmantree;
//選擇所有節點中權重最小的兩個節點的下標
void selectmin(huffmantree ht, int n, int &s1, int &s2)
else
}} if(ht[s1].weight > ht[s2].weight)
for(i+=1; i < n; i++)
else if(ht[i].weight < ht[s2].weight)
} }}
void createhuffmantree(huffmantree &ht)
for(int i = 1; i <= n; i++)
// 第乙個節點的權重儲存所有節點的個數
ht[0].weight = m;
/***********初始化完成,開始構建哈夫曼樹**********/
for(int i = n + 1; i <= m; i++) }
int huffmantreewpl_(huffmantree ht, int i, int deepth)
else }
int huffmantreewpl(huffmantree ht)
void print(huffmantree ht)
}void destoryhuffmantree(huffmantree &ht)
int main()
執行結果如下:
參考:
資料結構 哈弗曼樹
code for fun created by dream whui 2015 2 8 include stdafx.h include using namespace std typedef struct 定義哈弗曼樹的結構 htnode,huffmantree typedef char huff...
資料結構哈弗曼樹
include using namespace std define maxvalue 1000 define n 100 typedef struct hnodetype typedef structhcodetype n為葉子節點的個數 void menu void create haffman...
資料結構 哈弗曼樹
哈夫曼樹應用例項 哈夫曼編碼 關鍵 要設計長度不等的編碼,則必須使任一位元組的編碼都不是另一字元的編碼的字首 字首編碼。解碼過程 分解接收字串,遇 0 向左,遇 1 向右,一旦達到葉子結點,則譯出乙個字元,反覆由根出發,直到解碼完成。特點 每一碼都不是另一碼的字首,絕不會譯錯。哈弗曼樹的構造 哈弗曼...