算法与数据结构--哈夫曼树与哈夫曼编码

news/2024/12/5 9:45:19/

演示视频:
【1】数据结构——五分钟搞定哈夫曼树,会求WPL值,不会你打我_哔哩哔哩_bilibili
【2】哈夫曼树和哈夫曼编码_哔哩哔哩_bilibili
【3】哈夫曼树的构造的做题三步骤_哔哩哔哩_bilibili

求哈夫曼编码的步骤:
1.根据字符及其权值(权值一般是数出现的次数)构造出哈夫曼树
2.根据建立好的哈夫曼树求出哈夫曼编码。

每个结点包括数据本身及其权值(及该数据出现的次数)

一.怎样构造哈夫曼树

1.将这串数据塞进优先队列,该优先队列中的数据按照数据的出现次数(或者说权值)从小到大进行排序。
将这些元素看成是只有根节点二叉树的根结点,相当于构造n棵只有根节点的二叉树。
2.选取权值最小的两个节点,将这两个结点对应的树作为左右子树,并创建一个新的父节点,从而构造一个新的二叉树。新节点的权值为这两个节点的权值之和。
3.将这两个最小的子结点出队,新创建的结点入队。【即:在森林中删除这两棵树,同时将新得到的二叉树加入森林中】
4.重复2,3步骤,直到节点集合中只剩下一个节点(只含一棵树),即哈夫曼树的根节点,对应的树即为哈夫曼树。哈夫曼树就构建完成了。
具体演示见视频。

二.根据哈夫曼树求出哈夫曼编码

什么是哈夫曼编码?

根据上面的定义,我们就很容易根据哈夫曼树求出每个数的哈夫曼编码。

三.计算WPL值(带权路径长度)

将最开始优先队列的每个数的权值乘以其所在的层数相加。【注意根结点在第0层,从第0层开始计算】


http://www.ppmy.cn/news/1278742.html

相关文章

跟着LearnOpenGL学习9--光照

文章目录 一、颜色二、创建光照场景 一、颜色 显示世界中有无数种颜色,每一个物体都有它们自己的颜色。我们需要使用(有限的)数值来模拟现实世界中(无限的)的颜色,所以并不是所有现实世界中的颜色都可以用…

Git常用命令及解释说明

目录 前言1 git config2 git init3 git status4 git add5 git commit6 git reflog7 git log8 git reset结语 前言 Git是一种分布式版本控制系统,广泛用于协作开发和管理项目代码。了解并熟练使用Git的常用命令对于有效地管理项目版本和历史记录至关重要。下面是一些…

从零学算法334

334.给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使得 nums[i] < nums[j] < nums[k] &#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…

golang开发--beego入门

Beego 是一个基于 Go 语言的开源框架&#xff0c;用于构建 Web 应用程序和 API。它采用了一些常见的设计模式&#xff0c;以提高开发效率、代码可维护性和可扩展性。 一&#xff0c;MVC设计模式 Beego 框架采用了经典的 MVC&#xff08;Model-View-Controller&#xff09;设计…

临床医学VR仿真情景实训教学应用

一、VR医学仿真情景教学应用 临床医学VR仿真情景实训教学是一种将VR虚拟技术应用于医学教育的新型教学方法。通过模拟真实的医疗环境&#xff0c;学生可以在虚拟场景中进行实践操作&#xff0c;从而更好地理解和掌握医学知识。与传统医学教育方式相比&#xff0c;VR技术为医学…

odoo17核心概念——env

env在odoo中是一个非常重要的概念&#xff0c;它是一个全局变量&#xff0c;保存了odoo运行环境的重要信息&#xff0c;env分为前端和后端 一、环境(env) 1、前端的env 在web\static\src\env.js中定义&#xff0c;包含两个重要的对象&#xff1a; 全局数据总线bus&#xff…

pr插件|特殊编码.mkv/mov/flv/webm/avi/wmv/vob等多种格式视频素材直接导入pr的插件 Influx v1.2.5

适用于Adobe的一体式原生导入器插件&#xff08;Premiere Pro、After Effects和Media Encoder&#xff09;。支持多种格式和编解码器。 主要特点 直接在Adobe CC Video中进行本机导入 不再需要通过外部转码软件&#xff01;节省时间、磁盘空间和麻烦 在Premiere Pro中导入和编辑…

【大数据存储与处理】实验一 HBase 的基本操作

一、实验目的&#xff1a; 1. 掌握 Hbase 创建数据库表及删除数据库表 2. 掌握 Hbase 对数据库表数据的增、删、改、查。 二、实验内容&#xff1a; 1、题目 0&#xff1a;进入 hbase shell 2、题目 1&#xff1a;Hbase 创建数据库表 创建数据库表的命令&#xff1a;create 表…