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

哈夫曼树

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

哈夫曼树的相关概念

  • 结点的权:有某种现实含义的数值。
  • 结点的带权路径长度:从树的根结点到该结点的路径长度(经过的边数)该结点上权值的乘积。
  • 树的带权路径长度:树中所有叶节点的带权路径长度之和(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,一经查实,立即删除!

相关文章

CAPL (Communication Access Programming Language)

CAPL (Communication Access Programming Language) 是一种专门用于模拟和测试汽车网络的脚本语言,特别是CAN (Controller Area Network) 和LIN (Local Interconnect Network) 网络。虽然CAPL主要用于模拟网络行为和测试网络节点,但它也支持一些基本的编…

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学习笔记07

第十三章,面向对象 初识对象 生活中数据的组织 学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填 我叫林军杰,今年31岁.来自山东省,我是男的,中国人 内容混乱 改为登记表…

详细分析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…

Flutter插件开发与发布指南

在Flutter应用程序开发中,有时候我们会遇到需要使用原生功能的情况,这时候就需要编写Flutter插件来实现与原生平台的交互。本篇博客将介绍如何编写、发布和使用Flutter插件。 1. 准备工作 在开始之前,确保你已经安装好Flutter开发环境&…

JavaScript中改进的数组功能

ES6标准为数组添加了很多新功能,例如,创建数组的新方法,创建定型数组(Typed Array)的能力等。 1、创建数组 在ES6以前,创建数组的方式主要有两种,一种是调用Array构造函数,另一种是用数组字面…

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…

应用日志集成到ElasticSearch

1、阿里云sls平台集成日志 阿里sls集成日志步骤 2、filebeat 收集到指定es 安装docker容器 Docker安装 拉取镜像: docker pull elastic/filebeat:7.5.1启动: docker run -d --namefilebeat elastic/filebeat:7.5.1拷贝容器中的数据文件到宿主机&a…

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

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

零基础机器学习(5)之线性回归模型的性能评估

文章目录 线性回归模型的性能评估1.举例1-单一特征2.举例2-多特征 线性回归模型的性能评估 评估线性回归模型时,首先要建立评估的测试数据集(测试集不能与训练集相同),然后选择合适的评估方法,实现对线性回归模型的评…