数据结构应用——哈夫曼树

哈夫曼树

  • 哈夫曼树的相关概念
  • 构造哈夫曼树
    • 基础算法
  • 哈夫曼编码

哈夫曼树的相关概念

  • 结点的权:有某种现实含义的数值。
  • 结点的带权路径长度:从树的根结点到该结点的路径长度(经过的边数)该结点上权值的乘积。
  • 树的带权路径长度:树中所有叶节点的带权路径长度之和(WPL)(只算叶子结点的,不算分支的)。

树的带权路径长度图解:
在这里插入图片描述
哈夫曼树:在含有n个带权叶节点的二叉树中,其中WPL最小的二叉树为哈夫曼树,也称最优二叉树。

构造哈夫曼树

基础算法

给定n个权值的结点

  1. 将这n个结点分别作为n棵仅含一个结点的二叉树,构成森林F。
  2. 构造一个新结点,从F中选取两棵结点权值最小的数作为新结点的左、右子树,并且将新结点的权值置为左、右子树上根结点的权值之和。
  3. 从F中删除刚才选出的两棵树,同时将新得到的树加入F中。
  4. 重复2、3,直至F中之剩下一棵树为止。

请添加图片描述哈夫曼树的结论:

  1. 每个手术室结点最终都将成为叶节点,且权值越小的结点到根结点的路径长度越大
  2. 哈曼夫树的结点总数为2n-1
  3. 哈曼夫树不存在度为1的结点
  4. 哈曼夫树并不唯一(左右顺序任意),但WPL必然相同且为最优

哈夫曼编码

采用哈夫曼树的性质构成的编码。
将字符集中的每个字符作为一个叶子结点,各个字符出现的频度最为结点的权值,根据之前介绍的方法构造哈夫曼树。
采用0、1来表示。

图示:
在这里插入图片描述

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

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

相关文章

XiBe希贝奶瓶好用吗?2名宝宝的宝爸深度测评分享!

几乎每个新手宝爸宝妈都会有一段时间对孩子的很多东西都是不懂的,一边摸索一边学习。列如关于奶瓶这个问题就困扰不少新手爸妈,特别是面对这么多的品牌的奶瓶完全不知道怎么选。 相信很多新手爸妈都十分担心奶瓶材质安全问题,所以我作为一名…

OpenCV+OpenCV-Contrib源码编译

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、OpenCV是什么?二、OpenCV 源码编译1.前期准备1.1 源码下载1.2 cmake安装1.3 vscode 安装1.4 git 安装1.5 mingw安装 2.源码编译2.1 打开cmake2.…

python(django)之流程接口管理后台开发

1、在models.py中加入流程接口表和单一接口表 代码如下: from django.db import models from product.models import Product# Create your models here.class Apitest(models.Model):apitestname models.CharField(流程接口名称, max_length64)apitester model…

详细分析Python中的enumerate()函数(附多个Demo)

目录 前言1. 基本知识2. Demo 前言 对于Python的基本函数,从实战中获取确切知识 1. 基本知识 enumerate() 接受一个可迭代对象作为输入,并返回一个枚举对象这个枚举对象包含了原始可迭代对象中的每个元素以及对应的索引它允许在循环中同时获取索引和值…

uboot - pinctrl - FPGA回片前测试阶段 - 设置GPIO引脚复用失败

问题描述 pinctrl设置引脚复用失败,没有调用到controller中的set_groups_function函数。 问题定位 pinctrl如何注册dm节点如何进行设备树中各个设备节点下的复用配置为什么没调用到控制器实现的set_groups_function函数 &gpio0 {status "okay";p…

VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker)(一)

今天从零搭建一下虚拟机的环境,把nacos,redis等微服务组件还有数据库搭建到里面,首先看到的是我们最开始下载VMware Workstation Pro 17 之后的样子,总共一起应该有三部分因为篇幅太长了 下载地址 : VMware - Delivering a Digit…

Vue动态设置控制表格列表展现列

最近遇到一个需求,表格列表默认不展示某一列,当我设置后可以展示该列,也可以展示和隐藏别的列,起到可以对整个表格列展示隐藏控制的效果,如下示例,默认不展示“单位名称”这一列,在我点击设置齿轮后可以看到,有“单位名称”这一列,但未打钩: 当我勾中“单位名称”,…

第2讲-Memory(5)外存

磁盘存储器 组成 记录原理 性能指标 (磁盘存取时间的计算) 磁盘地址 工作过程 优点 ①存储容量大,位价格低; ②记录介质可重复使用; ③记录信息可长期保存而不丢失,甚至可脱机存档; ④非破坏性读出,读出时不需要再生。 缺点 存取速度慢,机械结构复杂,对工作环境…

在wps的word中如何引用正确引用参考文献

目录 插入参考文献编号把插入的编号置于右上角最终效果 插入参考文献编号 把插入的编号置于右上角 最终效果

面试算法-88-反转链表

题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 解 class Solution {public ListNode reverseList(ListNode head) {if(head null || hea…

大数据技术在工厂生产数字转型中的应用与价值

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 随着大数据技术的快速发展,越来越多的企业开始关注并应用大数据技术&#x…

HCIP-Datacom(H12-821)新题

最新 HCIP-Datacom(H12-821)完整题库请扫描上方二维码访问,持续更新中。 以下关于OSPF的描述,哪些项是正确的? A. 第二类外部路由的开销值只是AS外部开销值,忽略AS内部开销值 B. AS-External-LSA描述的是…

prettier + eslint 配置

vue-cli 新建项目选择 ESLint Prettier 会自动下载相关包 settings.json {"editor.formatOnSave": true, // 开启保存文件自动格式化代码"editor.defaultFormatter": "esbenp.prettier-vscode", // 默认的代码格式化工具// "prettier.r…

【C++航海王:追寻罗杰的编程之路】stack

目录 1 -> stack的介绍和使用 1.1 -> stack的介绍 1.2 -> stack的使用 1.3 -> stack的模拟实现 1 -> stack的介绍和使用 1.1 -> stack的介绍 stack的文档介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中&#xff0c…

力扣---零钱兑换---动态规划

思路: 这是一道典型的动态规划问题(希望下次不用提示,能直接认出来):我将g[i]定义为总金币为i所需的最少硬币个数。所以递推公式可以表示为:g[i]min(g[i-1],g[i-2],g[i-5])1,也就是g[i]min(g[i-…

【Python音视频技术】玩AI视频创作引发写Python音视频技术系列文章1---视频添加字幕

最近对视频创作感兴趣, 详情见之前写的几篇文章。 【AI应用】模仿爆款视频二次创作短视频操作步骤 【人工智能】AI数字人视频演示 【人工智能】AI视频二次创作演示 作为程序员出身的我,看到一些功能, 我都有猎奇的习惯, 想着自己用什么技…

js数据流详细讲解

文章目录 单向数据流单向数据流示例: 双向数据流双向数据流示例: 延伸和扩展状态管理Redux 示例: 异步数据流异步操作示例(使用 async/await): 数据转换和处理数据处理示例(使用 lodash): 实时数…

【软件测试】探索和学习在模型中的软件测试

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-JIGESSc1ecUpVUnH {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

七种查找方式(Java)

一、基本查找 也叫做顺序查找 说明:顺序查找适合于存储结构为数组或者链表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线的一端开始,顺序扫描,依次将遍历到的结点与要查找的值相比较&#xff…

数字功放VS模拟功放,选择适合你的音频解决方案

数字功放和模拟功放是音频系统中常用的两种功放技术,适用于不同的音频应用,都具有各自的优势和特点。本文将为您详细介绍数字功放和模拟功放的差异,并帮助您找到适合自己的音频解决方案。 1、数字功放是一种利用数字信号处理技术的功放。它将…