哈夫曼树的学习

news/2024/7/5 5:01:47

路径:

从一个结点往下可以到达的结点之间的通路,称为路径。

路径长度:

某一路径所经过的“边”的数量,称为该路径的路径长度

结点的带权路径长度:

若将树中节点赋给一个带有某种含义的数值,则该数值称为该结点的权,从根结点到该节点之间的路径长度与该节点的权的乘积,称为该结点的带权路径长度。

树的带权路径长度:

树的带权路径长度规定为所有叶子结点的带权路径长度之和。


哈夫曼树:

哈夫曼树又称为最优二叉树,是带权路径长度最短的二叉树。

给定n个权值作为n个叶子结点,构造一颗二叉树,若该树的带权路径长度与其叶子结点的分布有关,即使是两颗结构相同的二叉树,也会因为其叶子结点的不同,导致两颗二叉树的带权路径长度不同。

构造一颗哈夫曼树的步骤:

1.初始状态下共有n个结点,结点的权值分别是给定的n个数,将他们视作n棵只有根结点的树。

2.合并其中根结点权值最小的两棵树,生成这两棵树的父结点,权值为这两个根结点的权值之和,这样树的数量就减少了一个。

3.重复操作2,直到只剩下一棵树为止,这棵树就是哈夫曼树。


哈夫曼树不存在度为1的结点,因为每次都是选择两颗树进行合并。

若给定n个数要求构建哈夫曼树,则构成的哈夫曼树的结点总数为2n-1,因为对应任意的二叉树,其度为0的叶子结点个数一定比度为2的结点个数多1.

为什么数组中下标为0的元素不存储结点信息?因为在数组中叶子结点的左右孩子是0,根结点的父结点是0,我们若是用数组中下标为0元素存储结点信息,那么我们将不能区分左右孩子为0的结点是叶子结点还是说该结点的左右孩子是下标为0的结点,同时也不知道哈夫曼树的根结点到底是谁。

要使叶子结点离根结点达到最远,那么生成的哈夫曼树应该是斜二叉树。


http://lihuaxi.xjx100.cn/news/1195994.html

相关文章

亚马逊店铺因为ODR绩效问题店铺被封,怎么申诉?分享个申诉流程?

详情如下所见: 第一步 明确你的销售权限被移除的原因。 详细的分析具体导致你的销售权限被移除的原因, 绩效不好因为违反了亚马逊的销售政策和协议而被取消销售权,例如: ODR 超标、有效跟踪单率过低、自发货取消,销售二手产品等 。 怎么…

基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

操作系统_进程

操作系统_进程 1 冯•诺依曼体系结构2 操作系统(Operator System)2.1 设计OS的目的2.2 OS的定位 3 进程3.1 什么是进程?3.2 查看进程3.3 通过fork创建进程使用 if 进行分流如何杀死一个进程 3.4 进程状态R - 运行状态S - 浅睡眠状态D - 磁盘休…

[数据集][目标检测]公路落石和滑坡数据集VOC格式-991张

分为真实场景和SD生成场景 真实场景: 数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):494 标注数量(xml文件个数):494 标注类别数&#x…

vue 3 第三十一章:状态管理(Pinia基础知识)

文章目录 1. Pinia 的介绍2. Pinia 的优点3. Pinia 的安装和使用3.1. 安装3.2. 使用3.1.1. 创建一个 Pinia Store3.2.2. 在组件中使用 Pinia Store3.2.3. 在模板中使用 Pinia Store 4. Pinia 的状态管理和数据流5. Pinia 的模块化和命名空间5.1. 模块化5.2. 命名空间 6. Pinia …

Midjourney万能高清咒语,真正的近看也美

明明我都拿人家的图垫图了,为什么质量还是很差? 明明别人都把咒语分享出来了,为什么质量还是很差? 今天我们就来解决这两个问题,看到就是缘分,点点手指来个小心心不过分吧,哈哈 什么你在怀疑我的…

什么是C/S架构?与B/S架构有什么区别?

1、 1.1、C/S架构的全称是Client/Server,即客户端/服务器体系结构,主要应用于局域网内。 1.2、B/S架构的全称为Browser/Server,即浏览器/服务器结构。百度安全验证https://baijiahao.baidu.com/s?id1742761249590653499&wfrspider&f…

【数据结构】难度上一个台阶的二叉树实现

【数据结构】难度上一个台阶的二叉树实现 一、什么是树和二叉树?二、目标三、实现3.1、初始化工作3.2、二叉树的前序遍历3.2.1、原理图解3.2.2、代码实现 3.3、二叉树的创建3.3.1、原理解析3.3.2、代码实现 3.4、二叉树的中序遍历3.5、二叉树的后序遍历3.6、二叉树的…