关键词不能为空

当前您在: 主页 > 英语 >

tributes数据结构 实验三 题目二:哈夫曼树

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-27 22:35
tags:

tributes-dr什么意思

2021年1月27日发(作者:bedding)


北京邮电大学电信工程学院



2008


级数据结构实验报告



实验名称:



实验三





学生姓名:









级:




班内序号:









号:









期:



20 013



11



26




1


.实验要求



实验目的



通过选择下面两个题目之一进行实现,掌握如下内容:



掌握二叉树基本操作的实现方法



了解赫夫曼树的思想和相关概念



学习使用二叉树解决实际问题的能力



实验内容



利用二叉树结构实现赫夫曼 编


/


解码器。



基本要求:



1.



初始化


(Init)



能够对输入的任意长度的字符串


s


进行统计,


统计每个字符的频度,

< br>并建


立赫夫曼树



2.



建立编码表

(CreateTable)


:利用已经建好的赫夫曼树进行编码,并将每个字符的 编码输


出。



3.



编码


( Encoding)


:根据编码表对输入的字符串进行编码,并将编码后的字符串输出。



4.



译码


(Decoding)


:利用已经建好的赫夫曼树对编码后的字 符串进行译码,并输出译码结


果。



5.



打印


( Print)


:以直观的方式打印赫夫曼树(选作)



6.



计算输入的字符串编码前和编码 后的长度,并进行分析,讨论赫夫曼编码的压缩效果。




2.


程序分析


哈夫曼树结点的储存结构除了二叉树所有的双亲域


parents

< br>,


左子树域


lchild



右子树域


rchild


< br>还需要有字符域


word


,权重域


weight


,编码域


code


。其 中由于编码是一串由


0



1

< p>
组成的


字符串,所以


code

是一个字符数组。



进行哈夫曼编码首先要对用户输入的信 息进行统计,将每个字符作为哈夫曼树的叶子结点。


统计每个字符出现的次数

< p>
(频度)


作为叶子的权重,


统计次数可以根据每个 字符不同的


ASCII


码。并根据叶子结点的权重建立一个哈夫 曼树。



建立每个叶子的编码从根结点开始,规定通往左子树路 径记为


0


,通往右子树路径记为


1.< /p>


由于编码要求从根结点开始,


所以需要前序遍历哈夫曼树,


故编码过程是以前序遍历二叉树



1




北京邮电大学电信工程学院



为基础的 。同时注意递归函数中能否直接对结点的编码域进行操作。



编 码信息只要遍历字符串中每个字符,


从哈夫曼树中找到相应的叶子结点,


取得相应的编码。


最后再将所有找到的编码连接起来即可。


译码则是将编码串从左到右诸位判别,


直到确定一个字符 。


这可以用生成哈夫曼树的逆过程


实现。由于每个字符的编码各 不相同,且编码也是个字符串,所以只要遍历编码串,从哈夫


曼树中找到相应的叶子结点 ,取得相应的字符再将找到的字符连接起来即可。



2.1


存储结构



哈夫曼树结点储存结构



word



哈夫曼树顺序存储结构




0


1


2


3


4



word


A


B


C


0


0


weight


35


25


15


40


75


lchild


-1


-1


-1


0


3


parents


3


3


4


4


-1


rchild


-1


-1


-1


1


2


weight


parent


LChild


RChild


2.2


关键算法分析



1


、统计字符的频度



自然语言描述:



1)



取出字符串中的一个字符



2)



遍历所有初始化的哈夫曼树结点



3)



如果结点中有记录代表的字符且 字符等于取出的字符,


说明该字符的叶子存在,


则将该


结点的权加一。



4)



如果所有结点均没有记录字符与取出字符一致,


说明该字符的叶 子不存在,


则将结点的


字符记为取出字符,并将权重设为


1.


5)



重复(


1




2




3




4


)步骤,如此遍历字符串中的所有字符。< /p>



伪代码:



(int i=0;i<


字符长度


;i++)



1.1for (int j=0;j<


字符长度


;j++)




1.1.1 if (WordStr[i]==HuffTree[j].word)





1.1.1.1


权重


++





1.1.1.2 break;








1.1.2


否则取字符域为空的结点






1.1.2.1 HuffTree[j].word=WordStr[i];





1.1.2.2 HuffTree[j].weight=1;









1.1.2.3


叶子数


++;





1.1.2.4 break;


结束




时间复杂度


O(n

< br>2


),


空间复杂度


S(0)


2


、构造哈夫曼树




2



tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思


tributes-dr什么意思



本文更新与2021-01-27 22:35,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/574882.html

数据结构 实验三 题目二:哈夫曼树的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文