4.数据结构期末复习之森林和最优二叉树(哈夫曼树)

news2024/9/22 4:06:19

1.森林的定义:m>=0 颗互不相交的树的集合
在这里插入图片描述
//树和森林的区别
在这里插入图片描述
2.森林的遍历 for森林里的树(前序和后序遍历)
3.树转二叉树(兄弟连起来,去右线)

1.兄弟之间加线(树和树之间不加)
2.右孩子去线(只保留第一个结点的线)
3.顺时针调整45度位置变成二叉树
在这里插入图片描述

在这里插入图片描述
4.森林转二叉树
1.树(全部的树依次)转二叉树
2.第一棵不动
3.第一棵的右边根节点连接第二棵的根节点,然后第2棵根节点连接第3棵的根节点
在这里插入图片描述

5.二叉树转树(去右孩子,连接右孩子[可以连接所有右孩子]) 上面的例子举例(连接上面去下面,与树转二叉树过程相反)
在这里插入图片描述
6.最优二叉树(哈夫曼树): 带权路径长度最小的二叉树(哈夫曼编码,是哈夫曼发明的)

1.权值: 叶子节点加个数字
带权路径长度(WPL Weighted Path Length): 求和 (根节点到叶的边数 * 权值) 如

A//这是最优二叉树(权值最小) 假设我们要发送信息是2 3 4,必须要编为0或1的二进制串
在这里插入图片描述

//这不是最优的
在这里插入图片描述
7.哈夫曼编码有什么用? 发消息如果不是最小权值(哈夫曼树)发消息会更费带宽(因为计算机是以二进制发送消息的)

8.哈夫曼编码的特点:

  1. 权值越大,离根节点更近
  2. 只有度为0和2的,没有度为0的

9.如何构造一颗最优二叉树? 给几个节点的权(其实代表发送的数据,想要最小网络带宽传输一段二进制)(一个最小WPL对应有多颗树,所以可能生成不同的样子)

1.找到最小的两个组合生成他们的节点,父节点的权为他们的和
2.在所有为组合的节点选最小的两个组合(包括新生成的父节点)

   如:
  A: 10    B: 8    C: 19   D:4   E:6   F:25

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

10.编码和解码

  1. 等长编码: 如 ASCII码是3位的
    不等长编码: 如哈夫曼编码 编出来的长度不唯一
  2. 解码: 有唯一性 需要满足任一编码不是其他编码的前缀(不重复);哈夫曼编码有唯一性
    编码: 没有唯一性

请添加图片描述

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

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

相关文章

网络安全 2023 年为什么如此吃香?事实原来如此.....

前言 由于我国网络安全起步晚,所以现在网络安全工程师十分紧缺。俗话说:没有网络安全就没有国家安全 为什么选择网络安全? 十四五发展规划建议明确提出建设网络强国,全面加强网络安全保障体系和能力建设,加强网络文明建设&#x…

OpenGl之变换

目录 缩放 位移 齐次坐标(Homogeneous Coordinates) 旋转 缩放 对一个向量进行缩放(Scaling)就是对向量的长度进行缩放,而保持它的方向不变。由于我们进行的是2维或3维操作,我们可以分别定义一个有2或3个缩放变量的向量,每个变量缩放一个轴…

软件测试之-测试用例写作规范

软件测试用例得出软件测试用例的内容,其次,按照软件测试写作方法,落实到文档中,两者是形式和内容的关系,好的测试用例不仅方便自己和别人查看,而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…

语音信号处理——噪声抑制

简介 噪声抑制技术用于消除背景噪声,改善语音信号的信噪比和可懂度,让人和机器听的更清楚常见的噪声种类:人声噪声、街道噪声、汽车噪声噪声抑制方法的分类: 按照输入通道数分:单通道降噪、多通道降噪按照噪声统计特性…

Overview of Blockchain区块链概述

目录 1.def 2.smart contract 3.Consensus mechanism 4.blockchain fork 比特币诞生的几年后,人们开始意识到区块链技术本身的潜力,慢慢走出了自己的发展路线。 通常区块链被定义为一种去中心化的分布式账本技术,最初用来记录信息&#x…

洛谷——SP1-TEST - Life, the Universe, and Everything +注册SPOJ的方法

文章目录 TEST - Life, the Universe, and Everything题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示Information注意注册SPOJ的方法我应该如何注册 SPOJ?注册流程原因 AC代码 TEST - Life, the Universe, and Everything 题面翻译 从输入读…

从零搭建微服务-注册中心(二)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址:https://gitee.com/csps/mingyue 文档地址:https://gitee.com/csps/mingyue/wikis 核心依赖 需要注册配置中心的服务引入下面 …

CountDownLatch详解以及用法示例

一、什么是CountDownLatch CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。 CountDownLatch的作用也是如此,在构造CountDownLatch(int coun…

订单管理轻松上手:低代码平台助力企业数字化转型

随着电子商务的发展和普及,企业的订单管理工作变得越来越复杂,传统的手工处理方式已经无法满足企业的需求,需要一种更高效、更精确、更可靠的订单管理方式。而低代码技术正是满足这一需求的一种有效解决方案。 一、订单管理的重要性 企业的…

高频面试八股文原理篇(三)Array,Vector,ArrayList和LinkedList区别

目录 数组(Array)和列表(ArrayList)的区别 Arrays工具类 Vector,ArrayList, LinkedList的区别 ArrayList扩容机制(原理) arrayList为什么线程不安全? 数组(Array)和列表(ArrayList)的区别 Array可以包含基本类型和对象类型,ArrayList只能…

电脑重装系统后,打印机驱动没了怎么办

驱动人生获悉,据微软最新消息,23年6月将对Windows 10进行强制升级,自动升级到22H2版本。不少用户听闻后,开始纷纷将系统重装到了Windows 11等,不过升级也以为着很多系统的东西需要推倒重来,其中就包括打印机…

Jupyter Notebook如何导入导出文件

目录 0.系统:windows 1.打开 Jupyter Notebook 2.Jupyter Notebook导入文件 3.Jupyter Notebook导出文件 0.系统:windows 1.打开 Jupyter Notebook 1)下载【Anaconda】后,直接点击【Jupyter Notebook】即可在网页打开 Jupyte…

【C++中map和unordered_map存储自定义类型需要做什么】

目录 一、map存储自定义类型 二、unordered_map存储自定义类型 一、map存储自定义类型 需要传入的参数是key-value键值对&#xff0c;和仿函数类型 对于内置类型&#xff0c;int、double、char重载了operator<所以传入less仿函数不会出错 但是对于自定义类型&#xff0c;如…

MySQL 视图 浅入浅出

前提 最近公司接了一个项目&#xff0c;项目是将一份内容丰富且包含大量数据透视表&#xff08;之所以称为数据透视表&#xff0c;是因为可以动态地改变它们的版面布置&#xff0c;以便按照不同方式分析数据&#xff0c;也可以重新安排行号、列标和页字段。每一次改变版面布置…

搭建一个AI对话机器人——前端ChatUI使用纪录

最近在使用 OpenAI 的 gpt api 搞着玩玩&#xff0c;然后就遇上了前端对话交互实现的需求场景&#xff0c;如何快速实现 CUI&#xff08;Chat User Interface&#xff09;成了问题。最后选择了来自阿里达摩院的ChatUI&#xff0c;本人便用于整理其使用经验。 介绍 服务于对话领…

自动驾驶 | 使用机器学习方法的GNSS多径检测

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 论文标题&#xff1a;GNSS Multipath Detection Using a Machine Learning Approach 论文链接&#xff1a;https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber8317700 摘要 在高度城市化地区…

Yolov8轻量化:EMO,结合 CNN 和 Transformer 的现代倒残差移动模块设计,性能优于EdgeViT、Mobile-former等网络

论文: https://arxiv.org/pdf/2301.01146.pdf 🏆🏆🏆🏆🏆🏆Yolo轻量化模型🏆🏆🏆🏆🏆🏆 重新思考了 MobileNetv2 中高效的倒残差模块 Inverted Residual Block 和 ViT 中的有效 Transformer 的本质统一,归纳抽象了 MetaMobile Block 的一般…

JAVA基础JVM讲解

JVM体系结构 主要包括两个子系统和两个组件&#xff1a; Class loader(类装载器) 子系统&#xff08;用来装载.class文件&#xff09;; Execution engine(执行引擎) 子系统&#xff08;执行字节码&#xff0c;或者执行本地方法&#xff09;&#xff1b; Runtime data area (…

2023年6月18日DAMA-CDGA/CDGP数据治理认证报名指南

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

弹性及其应用

弹性 衡量了买者和卖者对市场环境变化作出反应的程度大小是我们能够更精确的分析供给和需求 需求的价格弹性 给定百分之一的价格变化&#xff0c;需求量变量的百分数就是需求的价格弹性它衡量了一种物品的需求量对该物品价格变化作出反应的程度大小 需求价格弹性的决定因素…