给定权值(15,3,14,2,6,9,16,17),构造相应的哈夫曼树

问题描述:

给定权值(15,3,14,2,6,9,16,17),构造相应的哈夫曼树

Huffman 编码
一、实验目的
熟悉Huffman编码方法.
了解并弄懂Huffman编码实现信息的无损压缩原理.
二、实验要求
熟悉C语言编程.
三、实验内容
1.根据给定的n个权值(w1,w2,…,wn)构成n棵二叉树的集合F={T1,T2,…,Tn},其中每棵二叉树Ti中只有一个带树为Ti的根结点
2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置其根结点的权值为其左右子树权值之和
3.在F中删除这两棵树,同时将新得到的二叉树加入F中
4.重复2,3,直到F只含一棵树为止
四、实验步骤
1.用C语言实现二叉树的说明
2.输入n个权值,并生成n个二叉树
3.对n个二叉树逐步生成Huffman树
4.对Huffman树的每个叶子结点生成编码
附:实验程序
#include
#define M 10
#define MAX 100
typedef struct
{
int data;
int pa,lc,rc;
}JD;
void huffman(int n,int w[],JD t[])
{ int i,j,k,x1,x2,m1,m2;
for(i=1;i