/*
* copyright (c) 2017,煙台大學計算機學院
* all right reserved.
* 檔名稱:btree
* 作者:尹娜
* 完成日期:2023年11月9日
* 版本號:v1.0
*
* 問題描述:哈夫曼樹
* 輸入描述:標準函式輸入
* 程式輸出:哈夫曼編碼及其平均長度
#define n 50 //葉子結點數
#define m 2*n-1 //樹中結點總數
//哈夫曼樹的節點結構型別
typedef struct
htnode;
//每個節點哈夫曼編碼的結構型別
typedef struct
hcode;
//構造哈夫曼樹
void createht(htnode ht,int n)
{ int i,k,lnode,rnode;
double min1,min2;
for (i=0; i<2*n-1; i++) //所有結點的相關域置初值-1
ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
for (i=n; i<2*n-1; i++) //構造哈夫曼樹
{min1=min2=32767; //lnode和rnode為最小權重的兩個結點位置
lnode=rnode=-1;
for (k=0; k<=i-1; k++)
if (ht[k].parent==-1) //只在尚未構造二叉樹的結點中查詢
{if (ht[k].weight
執行結果:
哈夫曼樹和哈夫曼演算法
1 最優二叉樹 具有最小加權路徑長度的二叉樹 2 哈夫曼演算法 由哈夫曼給出,用於構造最優二叉樹的演算法 3 哈夫曼樹 用哈夫曼演算法構造的最優二叉樹 4 哈夫曼演算法 很熟,所以就略了 5 函式createhfmtree的步驟 首先,構造n棵哈夫曼樹的物件,每棵樹只有乙個權值為w i 的根節點,且...
生成哈夫曼樹
有n個數,把它們合成1個數,每次的代價是兩數之和,問最小代價。哈夫曼樹的模板題,每次去兩個最小的數,相加,再把它們的和加入陣列。include include include include include include include includeusing namespace std typ...
C C 實現哈夫曼樹和生成哈夫曼編碼
用c語言實現哈夫曼樹和生成哈夫曼編碼,首先生成哈夫曼樹,哈夫曼樹是從中選取權值最小的兩個進行相加,將這兩個分別做為生成的左子樹和右子樹,左子樹要比右子樹小。然後將相加得到的值從新放入,然後又從中找到最小的兩個值,然後用這個兩個值一直相加,直到只剩最後乙個值,將這個值作為哈夫曼樹的根。生成哈夫曼編碼,...