/*
*创建哈弗曼树
*创建树
*每次遍历最小的两个节点
*译码
*遍历树(解码的过程)
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define n 4//树的叶子节点数
#define m (2*n-1)//树的节点总数
#define MAXVALUE 1000 //权重最大值
typedef struct htreetype
{
int weight;//权重
int parent;//双亲节点
int Rchild;
int Lchild;//左右孩子节点
char name[5];//节点名称
}HtreeType;//树节点的结构体
typedef struct hcodetype
{
char bit[n];//用于存放编码的数组
char name[5];//储存节点的名称
int start;//编码开始的下标
}HcodeType;//编码节点的结构体
void select_htree(HtreeType tree[],int position,int *node1,int *node2);//选择最小的两个
void htree_code(HtreeType tree[],HcodeType code[]);//译码的过程
void creat_htree(HtreeType tree[]);//哈夫曼树的创建
void show_htree(HcodeType code[] );//输出
int main()
{
HtreeType tree[m];
HcodeType code[n];
htree_code(tree,code);
show_htree(code);
return 0;
}
void creat_htree(HtreeType tree[])//哈夫曼树的创建
{
/*
*初始化树的节点
*给树的叶子节点赋值
*利