哈夫曼编码和带权路径计算
哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。下面用一幅图来说明。
它们的带权路径长度分别为:
图a: WPL=5*2+7*2+2*2+13*2=54
图b: WPL=5*3+2*3+7*2+13*1=48
可见,图b的带权路径长度较小,我们可以证明图b就是哈夫曼树(也称为最优二叉树)。
哈夫曼树构建教程
例:对于给定的一组权值w={1,4,9,16,25,36,49,64,81,100},构造具有最小带权外部路径长度的扩充二叉树,并求出他的的带权外部路径长度。
解:1、首先我们对这一组数字进行排序。规则是从小到大排列(题目已排序好)。
2、在这些数中 选择两个最小的数字(哈夫曼树是从下往上排列的)写在纸上。如下图所示
3、用一个类似于树杈的“树枝”连接上两个最小的数。在顶点处计算出这两个数字的和 并写在上面。然后再比较剩下的数字和这个和的大小,再取出两个最小的数字进行排列
4、如上图中30,25的和为55,已经大于36,49.所以这个时候开始有分支,用36,49再构造一个分支,如下图。
5、最后将分支合并成一个二叉树,如下图
6、这样,二叉树结构就构建好了。
带权外部路径长度计算;
WPL=2*100 + 3*64 + 2*81 + 4*25 + 2*49 + 2*36 + 5*16 + 6*9 + 7*1 + 7*4 =993
(385的权重为0,216和166权重为1.....)
左0右1:哈夫曼编码为:
哈夫曼编码和带权路径计算相关推荐
- 哈夫曼树的构建、编码以及带权路径长计算
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长度最短的树,权值较大的结点离根较 ...
- 给定结点权值,求哈夫曼树的带权路径长度和
1.哈夫曼树概念 一棵树中,从任意一个结点到达另一个结点的通路叫做路径,该路径包含的边的个数称为路径长度,每个结点带有的表示某种意义的值成为权值.从根结点到叶子结点的路径长度乘以叶子节点权值,得到的值 ...
- 哈夫曼树的带权路径长度和
正常想要计算哈夫曼树的路径长度之和,是遍历一遍树,将叶结点的权值乘上深度再加和. 那么对于路径和的计算有这样一个公式: 哈夫曼树的带权路径长度和=等于所有非叶节点的权值和 所以说我们只需要每次将数组前 ...
- 自动计算哈夫曼树的带权路径长度
C语言自动计算哈夫曼树的带权路径长度: #include<stdio.h> #include<stdlib.h> int cmp(const void *a,const voi ...
- 哈夫曼树的带权路径长度总结wpl
//哈夫曼树的带权路径长度 //总结 //法一:①先对权值从小到大排序. //②选两个最小的加起来成为一个新结点,而这两个最小的值是新结点的左右子结点. //③两个老的结点去掉,新的结点放入再次排序然 ...
- 算法学习笔记——数据结构:哈夫曼树、带权路径长度WPL、哈夫曼编码
引入 合并果子问题如下: 有n堆果子,每次可以合并任意两堆果子,耗费体力值为[两堆果子数之和],最终在n-1次合并后,得到一堆果子. 给出合并的方案,使得耗费的体力值最小 例如有3堆果子,质量依次为1 ...
- 【数据结构-N】哈夫曼树带权路径计算
那个闪闪发光的人 会在某一天的雨后,不经意地出现在你的迷茫路口. 目录: 哈夫曼树的构建 带权路径长度计算 >>构建 哈夫曼树,又称最优二叉树,是一类带权路径长度最短的树. 构建哈夫曼树的 ...
- 哈夫曼树(带权路径长度+树的带权路径长度+哈夫曼树定义+构造哈夫曼树+哈夫曼树性质+哈夫曼编码+计算平均码长-这里指WPL)
带权路径长度 树的带权路径长度WPL 哈夫曼树 哈夫曼树构造 哈夫曼树性质 哈夫曼编码 固定长度编码 可变长编码 前缀编码 固定长度编码.可变长编码.前缀编码.哈夫曼编码 思维倒图 试题
- 每天一道数据结构练习题(给定权值求出哈夫曼树的带权路径长度)
名词解释: 带权路径长度也就是树的带权路径长度,树的路径长度是从树根到树中每一结点的路径长度之和.在结点数目相同的二叉树中,完全二叉树的路径长度最短. 结点的权:在一些应用中,赋予树中结点的一个有某种 ...
最新文章
- 2.本征矩阵 基本矩阵以及对极几何之间的约束关系
- linux权限切换命令,Linux基础常用命令汇总(权限操作)
- Java四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor...
- C++之整理一些最近看书的收获
- python处理滑块验证码_使用python实现滑动验证码
- Visual C++ 2008入门经典 第九章类的继承和虚函数(二)
- Spring-BeanPostProcessor的执行顺序
- 记录This request has been blocked; the content must be served over HTTPS.
- CROSS APPLY和OUTER APPLY的区别
- 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
- 用c语言编程,统计大写字母,小写字母,数字,其他字符的个数,用C语言:输入一行字符,不超过50个,统计出其中英文大写字母,小写字母,数字,空格以及其他字符个数...
- 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\
- 【TFT屏幕】1.44寸彩屏
- Java利用JNA调用C#的dll
- linux如何修改当前时间
- Python批量处理jpg转换为bmp图片,告别手动转换,真爽,
- CCPC2018 桂林 D Bits Reverse
- Device Orientation——设备方向
- 【LeetCode】463. 岛屿的周长
- 开源的php网站程序,免费PHP开源CMS网站程序
热门文章
- 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
- golang 大数据平台_大数据平台是什么?有哪些功能?如何搭建大数据平台?
- 上证50基金有哪些_定投基金(易方达上证50指数A)
- mac同步linux文件夹在哪里设置,Linux和Mac上的一些特殊文件将不再同步
- 巨一自动化工业机器人_工业机器人和自动化设备连接器
- 图形显卡_选核芯显卡还是独立显卡?这才是决定笔记本电脑性能的关键
- Spring Boot 实用开发技巧————Eclipse 远程调试
- 深入理解Tomcat和Jetty源码之第三篇tomcat系统架构上:连接器是如何设计的
- php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程
- 创建物化视图commit_oracle慎用基于on commit刷新物化视图的方式(一)