哈夫曼树的构造过程
来源:互联网 发布:知轩藏书论坛 编辑:程序博客网 时间:2024/06/14 11:01
今天做题的时候,遇到了一个关于哈夫曼树的题,由于一直不是很明白哈夫曼树的构造过程,所以找了很多资料都不是特别清楚的,直到我遇到了这篇文章,哈哈,在此分享给大家哦!
注意:哈夫曼树并不唯一,但带权路径长度一定是相同的。
(1)8个结点的权值大小如下:
(2)从19,21,2,3,6,7,10,32中选择两个权小结点。选中2,3。同时算出这两个结点的和5。
(3)从19,21,6,7,10,32,5中选出两个权小结点。选中5,6。同时计算出它们的和11。
(4)从19,21,7,10,32,11中选出两个权小结点。选中7,10。同时计算出它们的和17。
(BTW:这时选出的两个数字都不是已经构造好的二叉树里面的结点,所以要另外开一棵二叉树;或者说,如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。)
(5)从19,21,32,11,17中选出两个权小结点。选中11,17。同时计算出它们的和28。
(6)从19,21,32,28中选出两个权小结点。选中19,21。同时计算出它们的和40。另起一颗二叉树。
(7)从32,28, 40中选出两个权小结点。选中28,32。同时计算出它们的和60。
(8)从 40, 60中选出两个权小结点。选中40,60。同时计算出它们的和100。 好了,此时哈夫曼树已经构建好了。
这是原作者的链接哦,我觉得还不错呢,大家可以去看看的!
注意:哈夫曼树并不唯一,但带权路径长度一定是相同的。
(1)8个结点的权值大小如下:
(2)从19,21,2,3,6,7,10,32中选择两个权小结点。选中2,3。同时算出这两个结点的和5。
(3)从19,21,6,7,10,32,5中选出两个权小结点。选中5,6。同时计算出它们的和11。
(4)从19,21,7,10,32,11中选出两个权小结点。选中7,10。同时计算出它们的和17。
(BTW:这时选出的两个数字都不是已经构造好的二叉树里面的结点,所以要另外开一棵二叉树;或者说,如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。)
(5)从19,21,32,11,17中选出两个权小结点。选中11,17。同时计算出它们的和28。
(6)从19,21,32,28中选出两个权小结点。选中19,21。同时计算出它们的和40。另起一颗二叉树。
(7)从32,28, 40中选出两个权小结点。选中28,32。同时计算出它们的和60。
(8)从 40, 60中选出两个权小结点。选中40,60。同时计算出它们的和100。 好了,此时哈夫曼树已经构建好了。
这是原博文的链接哦!点击打开链接
注意:哈夫曼树并不唯一,但带权路径长度一定是相同的。
(1)8个结点的权值大小如下:
(2)从19,21,2,3,6,7,10,32中选择两个权小结点。选中2,3。同时算出这两个结点的和5。
(3)从19,21,6,7,10,32,5中选出两个权小结点。选中5,6。同时计算出它们的和11。
(4)从19,21,7,10,32,11中选出两个权小结点。选中7,10。同时计算出它们的和17。
(BTW:这时选出的两个数字都不是已经构造好的二叉树里面的结点,所以要另外开一棵二叉树;或者说,如果两个数的和正好是下一步的两个最小数的其中的一个,那么这个树直接往上生长就可以了,如果这两个数的和比较大,不是下一步的两个最小数的其中一个,那么就并列生长。)
(5)从19,21,32,11,17中选出两个权小结点。选中11,17。同时计算出它们的和28。
(6)从19,21,32,28中选出两个权小结点。选中19,21。同时计算出它们的和40。另起一颗二叉树。
(7)从32,28, 40中选出两个权小结点。选中28,32。同时计算出它们的和60。
(8)从 40, 60中选出两个权小结点。选中40,60。同时计算出它们的和100。 好了,此时哈夫曼树已经构建好了。
- 哈夫曼树的构造过程
- Java的构造过程
- 类的构造过程实例
- JAVA构造类的过程
- 构造函数的初始化过程
- 构造方法的执行过程
- 【计算机程序的构造和解释】第一章 构造过程抽象
- java 构造函数的执行过程
- Linux中socket的构造过程
- 对象的构造和初始化过程
- 对象的构造和析构过程
- Swift的构造和析构过程
- C++对象的构造/析构过程
- 构造方法调用的具体过程
- java 继承体系对象的构造过程
- 类的继承和构造过程
- swift_024(Swift 的构造过程)
- 类的继承和构造过程
- K-means 聚类算法的理解与案例实战
- Mac_java开发_重要但不常用命令集
- Hadoop基础教程-第10章 HBase:Hadoop数据库(10.5 HBase Shell)(草稿)
- 第十三天java学习笔记
- 04期:从JS垃圾回收机制和词源来透视闭包
- 哈夫曼树的构造过程
- 第十二天java学习笔记
- HTML入门笔记16-HTML相对链接
- java的修饰词的权限
- java的位运算与移位运算实例研究
- Drying POJ
- Spring4.X使用c3p0加载配置文件连接数据库,出现的Access denied for user 'root'@'localhost' 错误!
- Django配置表单
- 一次面试