软件设计师 --哈夫曼树的一个经典问题

题目如下:

有很多人反应,他们怎么做都做不出正确的答案,结果发过他们画的哈夫曼树的图以后,发现图完全是错误的;

如下图所示:


为什么错误的,因为在遇到有两个权重为17的树的时候,没有遵循选择矮树的原则;

正确的哈夫曼树如下:


这样就能得出正确答案了。


总结:在绘制哈夫曼树的时候,要遵循一下原则:

(1)左子树的权重小于右子树(这个一般人都会注意的,因为哈夫曼树是二叉树,是有序的)

(2)遇到权重相同的,选比较矮的那个(why?因为这样我们的整个哈夫曼树才会尽可能的矮,编码才尽可能的短);

生成过程如下:















本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mini2440烧写nor flash

1. 安装Setup_JLinkARM_V440.exe 2. 打开JLINK ARM 3. File->Open Project,打开 s3c2440a_embedclub.jflash4. Options->Project settings... 选择 Flash,点击 Select flash device,选中开发板对应的 Nor Flash 芯片型号。比 如 S29AL0…

软件设计师--判定覆盖,判定条件覆盖,条件组合覆盖--一个栗子

针对上图的一个判断条件,在这里将分别讨论判定覆盖、判定条件覆盖、条件组合覆盖的情况: 设T1A>3,T2B>3;为该判定节点的两个子条件。 (一)判定覆盖: 所谓的判定覆盖就是让判定的真分支和假分支各执行一次,只要…

python3 多继承搜索__init__方法的两种策略

继承情形一:测试代码如下: class A(object):def __init__(self):print(A)class B(object):def __init__(self):print(B)class C(A):def __init__(self):print(C)class D(B): def __init__(self):print(D)class E(C, D):pass执行当前代码 xE()&#xff0c…

Unity Shader 屏幕后效果——Bloom外发光

Bloom的原理很简单,主要是提取渲染图像中的亮部区域,并对亮部区域进行模糊处理,再与原始图像混合而成。 一般对亮部进行模糊处理的部分采用高斯模糊,关于高斯模糊,详见之前的另一篇博客: https://www.cnblo…

不要假装努力,结果不会陪你演戏!

转载于:https://www.cnblogs.com/strive-19970713/p/11171205.html

机器学习基石-作业二-第10题分析

题目如上图所示,答案是:;在网上看到的答案中有一个很好的解释就是说在一个n纬的欧几里德空间里,分别按照参数做一个垂直于每个轴的超平面,这些超平面能够打散这么多个点。首先我承认这个事实,具体的证明还没…

机器学习基石作业二中的DECISION_STUMP实现

概要:在林老的题目描述中,DECISION_STUMP(其实就是“决策桩”,也就是只有一层的决策树)。题目中提到了的选去是把属性(一维的)按照从小到大的顺序排列以后取两个挨着的值的平均值,网…

【MM系列】SAP 关于更改物料的价格控制类型

公众号:SAP Technical本文作者:matinal原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:【MM系列】SAP 关于更改物料的价格控制类型前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适…

机器学习基石-作业三-第2题分析以及通过H证明EIN的讨论

题目: 这是机器学习基石作业三种的第二小题,额,在网上看了很多解答(解答也不多)感觉都没有说清楚为什么,所以励志清楚滴解决一下这个问题,经过努力,自认为得到了详细的解答&#xff…

Nginx的平滑升级记录---适用于编译安装的Nginx

一、查看自己的Nginx的版本号 [rootlocalhost sbin]# cd /usr/local/nginx/sbin/ [rootlocalhost sbin]# ls nginx [rootlocalhost sbin]# ./nginx -V nginx version: nginx/1.15.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) configure arguments: 二、确定自己要…

02(c)多元无约束优化问题-牛顿法

此部分内容接《02(a)多元无约束优化问题》! 第二类:牛顿法(Newton method) \[f({{\mathbf{x}}_{k}}\mathbf{\delta })\text{ }\approx \text{ }f({{\mathbf{x}}_{k}}){{\nabla }^{T}}f({{\mathbf{x}}_{k}})\cdot \mathbf{\delta }\frac{1}{2}{{\mathbf{\…

推荐系统浅浅的例子

对于推荐系统,有很多的很强大的算法。这里作为练习,只介绍基本的协同过滤算法(userbased)和FM(通过梯度下降的角度,还可以通过交替优化的角度来看)。 这里的例子是在七月算法的视频中看的&#…

TPL Dataflow .Net 数据流组件,了解一下?

回顾上文 作为单体程序,依赖的第三方服务虽不多,但是2C的程序还是有不少内容可讲; 作为一个常规互联网系统,无外乎就是接受请求、处理请求,输出响应。 由于业务渐渐增长,数据处理的过程会越来越复杂和冗长&…

推荐系统实例

协同过滤与隐语义模型 在机器学习问题中,我们见到的数据集通常是如下的格式: input target ... ... ,一个输入向量的集合以及对应的数据集合,就是我们想要去预测的值。 对于…

【转】深入理解JavaScript闭包(closure)

文章来源:http://www.felixwoo.com/archives/247 最近在网上查阅了不少Javascript闭包(closure)相关的资料,写的大多是非常的学术和专业。对于初学者来说别说理解闭包了,就连文字叙述都很难看懂。撰写此文的目的就是用最通俗的文字揭开Java…

从头开始建立神经网络翻译及扩展

目录翻译从头开始建立神经网络-简介导包和配置生成一个数据集实现用来展示决策边界的辅助函数Logistic Regression训练一个神经网络我们的神经网络如何进行预测学习神经网络的参数实现神经网络训练一个隐层有3个神经元的神经网络验证隐层神经元个数对神经网络的影响练习练习题解…

对比 C++ 和 Python,谈谈指针与引用

花下猫语:本文是学习群内 樱雨楼 小姐姐的投稿。之前已发布过她的一篇作品《当谈论迭代器时,我谈些什么?》,大受好评。本文依然是对比 C 与 Python,来探讨编程语言中极其重要的概念。祝大家读有所获,学有所…

《吴恩达深度学习》第一课第四周任意层的神经网络实现及BUG处理

目录一、实现1、吴恩达提供的工具函数sigmoidsigmoid求导relurelu求导2、实现代码导包和配置初始化参数前向运算计算损失后向运算更新参数组装模型3、问题及思考一、实现 1、吴恩达提供的工具函数 这几个函数这里只是展示一下,这是吴恩达写好的工具类,…