美文网首页
构造哈夫曼树

构造哈夫曼树

作者: 喜忧参半 | 来源:发表于2021-11-30 14:22 被阅读0次

构造huffman树的算法:

算法思想:
哈夫曼算法采用自底向上逐步合并的方法,构造哈夫曼树:
步骤1)构造n颗单叶结点的二叉树,形成初始森林。
步骤2)执行三个操作,反复将森林中的两棵树合并成一棵树,直到森林中只有一棵树。

  • ① 选择森林中根权值最小的两棵树:T1和T2
  • ② 将T1和T2合并称为一颗树T,使T1和T2作为T的左右子树,并且T的根权值为T1,T2根权值之和。
  • ③ 将合并后的树T,放回森林中。

//构造哈夫曼树的函数,默认已有序
Hfptr createHftree(Hfptr head)
{
    int i;
    Hfptr p,q,r,t1,t2;         //p,q是后面给合并树排序用的
                               //t1和t2是待合并的两个权值最小二叉树
    for(i=1;i<n;i++)
    {
        r =new Hfnode; //r=malloc(sizeof(Hfnode));
        t1=head->next;  //权值最小的就是第一棵树
        t2=t1->next;    //权值最小的第二棵树
        r->data=t1->data + t2->data; //r的权值为t1和t2的和
        r->Lson=t1;     //t1作为左儿子
        r->Rson=t2;     //t2作为右儿子
        head->next=t2->next; //从森林中删去t1和t2
        q=head;         //准备进行有序插入
        p=head->next;   //p是搜索指针,q是p的前驱
        while(1)            //定位合并树的有序位置
            if(p->data<r->data)  //如果合并树权值比p所指树权值大
            {
                q=p;             //将当前所指位置赋给q
                p=p->next;       //并且p指针后移
            }else{          //否则?也就是找到了比合并树权值大的结点
                r->next=p;      //将那个结点作为p的后继结点
                q->next=r;      //将刚刚q作为p的前驱结点
                break;
            }
    }                        //终止for循环
    p=head->next;        //将头结点作为监督元;
    delete head;            //删去监督元
    return (p);                //返回huffman树的根
}                    //构造完毕

相关文章

  • 2018-11-27

    今天看了哈夫曼构造过程,了解如何构造哈夫曼树。

  • 数据结构

    哈夫曼树的构造

  • 题型

    树 二叉树相关计算二叉树的三种遍历序列 前/后序+中序序列构造树 哈夫曼树 哈夫曼树的构造哈夫曼编码带权路径长度压...

  • 构造哈夫曼树

    构造huffman树的算法: 算法思想:哈夫曼算法采用自底向上逐步合并的方法,构造哈夫曼树:步骤1)构造n颗单叶结...

  • Huffman树及Huffman编码

    Huffman树及Huffman编码 一.实验目的 掌握哈夫曼树的构造算法、哈夫曼编码原理。 二.实验要求与内容 ...

  • 数据结构06-哈夫曼树与哈夫曼编码

    数据结构06-哈夫曼树 一、哈夫曼树的基本概念 1.哈夫曼树 给定n个权值作为n个叶子节点,构造一棵二叉树,若带权...

  • Java_二叉树用途

    赫夫曼树 赫夫曼树的构造 赫夫曼树构造过程 查找二叉树

  • 《恋上数据结构与算法一》笔记(十八)哈夫曼树

    目录 哈夫曼编码(Huffman Coding) 哈夫曼树 构建哈夫曼树 构建哈夫曼编码 一 哈夫曼编码(Huff...

  • 《数据结构与算法》总结(七)哈夫曼树

    目录 哈夫曼编码(Huffman Coding) 哈夫曼树 构建哈夫曼树 构建哈夫曼编码 一 哈夫曼编码(Huff...

  • A simple test

    哈夫曼编码 此代码用于生成哈夫曼树并且获取哈夫曼编码

网友评论

      本文标题:构造哈夫曼树

      本文链接:https://www.haomeiwen.com/subject/dyddxrtx.html