频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
数据结构例程——哈夫曼树
2015-10-21 15:34:00         来源:迂者-贺利坚的专栏  
收藏   我要投稿

本文是数据结构基础系列(6):树和二叉树中第15课时哈夫曼树的例程。

这里写图片描述

#include 
#include 

#define N 50        //叶子结点数
#define M 2*N-1     //树中结点总数

//哈夫曼树的节点结构类型
typedef struct
{
    char data;  //结点值
    double weight;  //权重
    int parent;     //双亲结点
    int lchild;     //左孩子结点
    int rchild;     //右孩子结点
} HTNode;

//每个节点哈夫曼编码的结构类型
typedef struct
{
    char cd[N]; //存放哈夫曼码
    int start;
} 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

 

点击复制链接 与好友分享!回本站首页
相关TAG标签 哈夫曼 数据结构
上一篇:数据结构例程——线索化二叉树(中序)
下一篇:数据结构例程——以孩子兄弟链存储的树的高度
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站