// 構造赫夫曼樹
#include
using
namespace std;
//哈夫曼樹的儲存表示
typedef
struct
htnode,
*huffmantree;
//查處權值最小且雙親為0的2的節點
void
select
(huffmantree ht,
int len,
int&s1,
int&s2)
}int temp = ht[s1]
.weight;
//將原值存放起來,然後先賦予最大值,防止s1被重複選擇
ht[s1]
.weight =
0x3f3f3f3f
;for
(i =
1; i <= len; i++)}
ht[s1]
.weight = temp;
//恢復原來的值
}void
creathuffmantree
(huffmantree &ht,
int n)
cout <<
"請輸入葉子結點的權值:\n"
;for
(i =
1; i <= n;
++i)
//輸入前n個單元中葉子結點的權值
cin >> ht[i]
.weight;
/*――――――――――初始化工作結束,下面開始建立赫夫曼樹――――――――――*/
for(i = n +
1; i <= m;
++i)
//for
}// creathuffmantree
intmain()
哈夫曼樹以及哈夫曼編碼的構造步驟
注意 哈夫曼樹並不唯一,但帶權路徑長度一定是相同的。第一部分 由給定結點構造哈夫曼樹 1 8個結點的權值大小如下 2 從19,21,2,3,6,7,10,32中選擇兩個權小結點。選中2,3。同時算出這兩個結點的和5。3 從19,21,6,7,10,32,5中選出兩個權小結點。選中5,6。同時計算出它...
哈夫曼樹的建立以及哈夫曼編碼
主要源 如下 include include define max num 105 typedef struct htnode,htree void selecttwomin htree ht,int n,int s1,int s2 ht s1 visited 1 將最小的頻率對應的結點標記為已被訪...
哈夫曼樹的建立
include include using namespace std typedef struct node tree void find tree t,int s1,int s2,int n int creat tree t,int n int s1,s2 先找了兩個值,然後一直比較找最小,也可...