有5个结点A,B,C,D,E,权值为7,9,5,6,18,构造一颗哈夫曼树(包含过程)

时间: 2023-10-02 20:10:18 浏览: 44
首先,将所有结点按照权值从小到大排序,得到序列A(7), C(5), D(6), B(9), E(18)。 接着,取出权值最小的两个结点C(5)和D(6),将它们合并成一个新结点CD(11),并将CD插入到序列中。现在序列为A(7), CD(11), B(9), E(18)。 再次取出权值最小的两个结点A(7)和CD(11),将它们合并成一个新结点ACD(18),并将ACD插入到序列中。现在序列为ACD(18), B(9), E(18)。 接下来,取出权值最小的两个结点B(9)和ACD(18),将它们合并成一个新结点BACD(27),并将BACD插入到序列中。现在序列为BACD(27), E(18)。 最后,取出权值最小的两个结点BACD(27)和E(18),将它们合并成一个新结点根节点(45)。这就是哈夫曼树的构造过程。哈夫曼树如下图所示: ``` 45 / \ / \ 27 18 / \ / \ 9 ACD / \ / \ 7 11 / \ / \ C D ```
相关问题

给出权值是2、4、5、7、9的叶子结点,请构造一颗二叉树

好的,我可以为您构造一个权值为2、4、5、7、9的叶子结点的二叉树。 27 / \ / \ 11 16 / \ / \ / \ / \ 4 7 5 9 其中,27为根节点,其左子树由11作为根节点,左右节点分别为4和7;右子树由16作为根节点,左右节点分别为5和9。

已知下列字符A、B、C、D、E、F、G的权值分别为3、12、7、4、2、8、11,试填写出其对应赫夫曼树HT存储结构的初态和终态,并利用权值构造一颗哈夫曼树(约定左孩子权值小于右子树权值),并对其进行赫夫曼编码,并计算WPH。

初态:将每个字符看作一个权值为其权值的树,共有7棵树。 终态:哈夫曼树HT存储结构中,每个非叶子结点有两个指针域,分别指向其左右孩子。 构造哈夫曼树的过程如下: 1.将所有权值从小到大排序,得到{E, A, D, C, F, G, B}。 2.将权值最小的E和次小的A合并,得到一棵新树,其权值为E和A的权值之和15,中间节点为权值为15的根节点,E、A为其左右孩子。 3.将权值为15的树(包含E、A)和权值第三小的D合并,得到一棵新树,其权值为15+4=19,中间节点为权值为19的根节点,15为其左孩子,D为其右孩子。 4.将权值为19的树(包含E、A、D)和权值第四小的C合并,得到一颗新树,其权值为19+7=26,中间节点为权值为26的根节点,19为其左孩子,C为其右孩子。 5.将权值为26的树和权值为第五小的F合并,得到一颗新树,其权值为26+2=28,中间节点为权值为28的根节点,26为其左孩子,F为其右孩子。 6.将权值为28的树和权值为第六小的G合并,得到一颗新树,其权值为28+11=39,中间节点为权值为39的根节点,28为其左孩子,G为其右孩子。 7.将权值为39的树和权值为最大的B合并,得到一颗新树,其权值为39+12=51,中间节点为权值为51的根节点,39为其左孩子,B为其右孩子。 最终得到的哈夫曼树如下: ``` 51 / \ 39 B / \ 28 G / \ 26 F \ 19 / \ 15 D / \ A E ``` 利用得到的哈夫曼树,可以求出字符A、B、C、D、E、F、G的编码: A:从根节点到A的路径为左左,编码为00 B:从根节点到B的路径为右,编码为1 C:从根节点到C的路径为左右右,编码为011 D:从根节点到D的路径为左右左,编码为010 E:从根节点到E的路径为左左右,编码为001 F:从根节点到F的路径为左右右右,编码为0111 G:从根节点到G的路径为左右左右,编码为0101 WPH = 3*2 + 12*1 + 7*3 + 4*2 + 2*3 + 8*2 + 11*2 = 87。

相关推荐

最新推荐

recommend-type

基于SpringBoot框架的中小企业完全开源的ERP.zip

基于springboot的java毕业&课程设计
recommend-type

基于Springboot的健身信息系统.zip

基于springboot的java毕业&课程设计
recommend-type

基于vue + springboot的学生成绩管理系统.zip

基于springboot的java毕业&课程设计
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SQL怎么实现 数据透视表

SQL可以通过使用聚合函数和GROUP BY子句来实现数据透视表。 例如,假设有一个销售记录表,其中包含产品名称、销售日期、销售数量和销售额等信息。要创建一个按照产品名称、销售日期和销售额进行汇总的数据透视表,可以使用以下SQL语句: ``` SELECT ProductName, SaleDate, SUM(SaleQuantity) AS TotalQuantity, SUM(SaleAmount) AS TotalAmount FROM Sales GROUP BY ProductName, SaleDate; ``` 该语句将Sales表按照ProductName和SaleDat
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这