赫夫曼树的c语言实现

本文介绍了如何使用C语言构建赫夫曼树。通过构建一个包含节点权值的二叉树,每次选取权值最小的两棵树合并,并更新树的集合,直至只剩下一棵树。此外,还涉及到了赫夫曼编码的过程。
摘要由CSDN通过智能技术生成

一颗有n个叶子结点的赫夫曼树共有2*n-1,可以储存在一个一维数组中。编码时候需要从叶子到根的路径。故对每一个结点而言,需要知道双亲的信息和孩子的信息。故利用以下存储结构

typedef struct
{
    int weight;
    int parent,lchild,rchild;
}HTNode,*HuffmanTree;//动态分配数组储存赫夫曼树

赫夫曼树的构造算法:

1.每次从树的集合中选取两颗根结点的权值最小的树作为左右子树构造一颗新的二叉树,其权值为左右子树的权值之和。

2.从树的集合中删除这两棵树,并将新合并的二叉树放入其中

3.重复1、2,直到之含一棵树为止。

从树的集合中选取两颗根结点的权值最小的树的实现

void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
 
    s1=s2=0;
    int i;
    for(i=1;i<=n;i++)
    {
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值