软件设计师 --哈夫曼树的一个经典问题
题目如下:
有很多人反应,他们怎么做都做不出正确的答案,结果发过他们画的哈夫曼树的图以后,发现图完全是错误的;
如下图所示:
为什么错误的,因为在遇到有两个权重为17的树的时候,没有遵循选择矮树的原则;
正确的哈夫曼树如下:
这样就能得出正确答案了。
总结:在绘制哈夫曼树的时候,要遵循一下原则:
(1)左子树的权重小于右子树(这个一般人都会注意的,因为哈夫曼树是二叉树,是有序的)
(2)遇到权重相同的,选比较矮的那个(why?因为这样我们的整个哈夫曼树才会尽可能的矮,编码才尽可能的短);
生成过程如下:
软件设计师 --哈夫曼树的一个经典问题相关推荐
- 哈夫曼树的一个实例,配对严蔚敏或耿国华的数据结构
/*这是一个哈弗曼编码的完整实例,没什么含量,只是爱X当时闲书上的写的不*/ #include <stdio.h> #include <stdlib.h> #include & ...
- 基于JavaGUI的哈夫曼树编码解码
资源下载地址:https://download.csdn.net/download/sheziqiong/85640300 资源下载地址:https://download.csdn.net/downl ...
- 【算法学习笔记】哈夫曼树的构建和哈夫曼编码的实现代码
介绍 哈夫曼(Haffman)这种方法的基本思想如下: ①由给定的n个权值{W1,W2,-,Wn}构造n棵只有一个叶子结点的二叉树,从而得到一个二叉树的集合F={T1,T2,-,Tn}. ②在F中选取 ...
- 数据结构(哈夫曼树,哈夫曼编码)入门篇,JAVA实现
什么是哈夫曼树 哈夫曼树就是一种最优判定树,举个例子,如下一个判断逻辑 if(s<60) g=1; else if(s<70) g=2 else if(s<80) g=3 else ...
- 一文看懂哈夫曼树与哈夫曼编码
转自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299884.html 在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUF ...
- POJ-Fence Repair 哈夫曼树
哈夫曼树,一个很耳熟的数据结构课上的内容.是用来处理编码的,准确的说是能够去压缩编码,本身是一种无损的压缩凡是,就是对于给定的字符做一个统计,然后根据统计构建一个长短不一的映射表,再根据这个映射表来恢 ...
- 哈夫曼树的构造及C++代码实现
哈夫曼树的构造过程: (1) 以权值分别为W1,W2...Wn的n各结点,构成n棵二叉树T1,T2,...Tn并组成森林F={T1,T2,...Tn},其中每棵二叉树 Ti仅有一个权值为 Wi的根结点 ...
- 赫夫曼树(Haffman)及其运用
赫夫曼树,别名"哈夫曼树"."最优树"以及"最优二叉树". 概念: 路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径. (从根结点 ...
- 哈夫曼树+K叉哈夫曼树
目录 基本概念 构造方法 证明 代码 k叉哈夫曼树 例题 基本概念 问题:给定n个权值,作为n个叶结点,构造一棵二叉树,而这棵树的特点是,有n个叶节点,叶节点的值为给定的权值.而内部节点的值为子树的权 ...
最新文章
- 轻松得到C# ADO.NET的各种数据库连接字符串
- 华为机器狗 VS 波士顿狗,谁更胜一筹?
- 2019年财政收支分析_2019年CPI走势预测与分析
- [今日干货]短视频获得种子用户的途径
- iOS开发-开发总结(七)
- 马凯军201771010116《面向对象程序设计(java)》第二周学习总结
- 华为linux配置ip地址命令是什么,华为S5700基础配置命令
- python perl shell_Shell Perl Python 介绍
- 一步设置Intellij IDEA 热部署处理方法
- 陷阱:使用==来比较原始的包装器对象,如Integer
- 如何创建VARCHART XGantt筛选器
- xmlspy_XMLSpy是免费的吗? 我说天堂的甘露。
- excel文件如何解密工作表保护密码
- MySQL之子查询优化
- eclipse IED 创建springboot项目教程
- 第3章第10节:如何压缩幻灯片中的图片素材 [PowerPoint精美幻灯片实战教程]
- 如何去掉抖音短视频水印----全网最好用的去抖音视频水印方法
- 运行wordcount时显示Could not obtain block
- simulink他励直流电动机降电压启动仿真
- 为什么z-index在众多标签中失效
热门文章
- linux删除权限命令,管理使用者和设立权限的命令
- php分解质因数,用PHP如何实现将一个整数分解为质因数的积?
- oracle导出有分区表的用户,分区表导出导入
- cli3解决 ie11语法错误 vue_【VUE3.0】它来了,2020年09月18日,Vue.js 3.0 正式发布,但是........
- C++ 读取结束的判断
- Java Float类详解
- laravel 任务队列_laravel队列-让守护进程处理耗时任务
- Python基础项目实践之:学生信息管理系统
- 虚拟服务器的好处与坏处,常见服务器虚拟化的弊端主要是什么问题?
- 九宫怎么排列和使用_什么是九宫飞星,九宫飞星在生活中的应用