数据结构【DS】树与二叉树的应用

哈夫曼树

  • 树的带权路径长度最小的二叉树
  • WPL = 路径长度【边数】 * 结点权值
  • n个叶结点的哈夫曼树共有 2n-1 个结点
  • 哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树
  • 对同一组权值,可能存在不同构的多棵哈夫曼树,但树的带权路径长度最小且唯一
  • 哈夫曼树不一定是完全二叉树

 

哈夫曼编码

  • 将字符频次作为字符结点权值,构造哈夫曼树,即可得哈夫曼编码,可用于数据压缩
    • 不同频次的字符也可能在相同的层
  • 前缀编码:没有一个编码是另一个编码的前缀
  • 固定长度编码:每个字符用相等长度的二进制位表示
    • 出现频次不同的字符一定在相同的层
  • 可变长度编码:允许对不同字符用不等长的二进制位表示

 

哈夫曼m叉树

  • 先补上权值为0结点,让序列凑可以构造m叉树的序列,每次挑最小m个去造树。

并查集

并查集的应用

  • 判断联通性,计算连通分量的个数
  • 判环

三要素:

  • 初始化:初始化并查集, 将所有数组元素初始化为-1
  • Find (S[],x):“查”, 找到元素x所属集合的根结点

Union (S[ ], root1, root2):“并”, 将两个集合合并为一个集合

  • 存储方式:
    • 逻辑:双亲表示法
    • 物理:数组

  • 时间复杂度:
    • find:
    • 总复杂度:n个元素多次Union

不考虑并查集的代码题

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

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

相关文章

斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语,还有批量梯度下降法、随机梯度下降法 SGD 以及它们的相关推导,还有正态方程)

假设函数定义 假设函数,猜一个 x->y 的类型,比如 y ax b,随后监督学习的任务就是找到误差最低的 a 和 b 参数 有时候我们可以定义 x0 1,来让假设函数的整个表达式一致统一 如上图是机器学习中的一些术语 额外的符号&#xf…

基于灰色神经网络的预测算法——订单需求预测

大家好,我是带我去滑雪! 灰色系统理论的不确定性处理与神经网络的非线性建模相结合,有望更好地处理实际问题中的不确定性和复杂性。本期使用灰色神经网络实现预测冰箱订单需求。 一、问题背景与模型建立 (1)灰色理论…

测试Bard和ChatGPT关于双休的法规和推理

Bard是试验品,chatgpt是3.5版的。 首先带着问题,借助网络搜索,从政府官方网站等权威网站进行确认,已知正确答案的情况下,再来印证两个大语言模型的优劣。 想要了解的问题是,在中国,跟法定工作…

达标进度条

1.效果 1. 2.代码与使用 1.自定义组合控件 kotlin import android.annotation.SuppressLint import android.content.Context import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.Gravity import android.view.LayoutInflat…

进程之理解进程的概念

你必须非常努力,才能看起来毫不费力。文章目录 进程的基本概念描述进程——pcbtest_struct pcb的一种task_struct 内容分类 组织进程查看进程通过系统调用获取进程标示符总结 进程的基本概念 课本概念:进程是一个执行实列,正在执行的程序等。…

C语言——1.入门须知

文章目录 1.C语言的简要概述1.1.C语言类比自然语言1.2.计算机语言的发展1.3.C语言在当今的地位1.4.C语言的优势和劣势1.4.1.C语言的优势1.4.2.C语言的劣势 2.C语言的应用场景3.C语言的学习路径3.1.学习目的3.2.学习路径3.3.学习资源3.3.1.推荐书籍3.3.2.推荐课程3.3.3.推荐题库…

Codeforces Round 910 (Div. 2)(D~F)

1898D - Absolute Beauty 题意:给定长度为n的数组a和b,定义b数组的价值为,现可以交换一次b数组中的任意两个元素,求b数组的价值最大值。 思路:绝对值问题可以放在数轴上去解决。绝对值即为区间长度 观察上述三种情况&…

《微信小程序开发从入门到实战》学习十九

3.3 开发创建投票页面 3.3.7 wx:for列表渲染 接下来为创建的投票页面添加一个“添加选项”的功能。需要用户输入文字,应该使用input组件。头投票的数量是不确定的,面对不确定数量的组件的情况时,可以使用wx:for属性对组件进行列表渲染。 使…

【腾讯云 HAI域探秘】——即时职场生存指南小游戏以及【自行搭建Stable Diffusion图片AI绘制 | ChatGLM2-6B AI进行智能对话 | Pytorch2.0 AI框架视频处理】

利用HAI的ChatGLM2 6B做一个即时对话小游戏 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上,ChatGLM2-6B 引入了更强大的性能、更长的上下文、更高效的推理,…

git使用及常用命令

在初入公司中,若使用的是git管理工具,需要做以下步骤: 1,常用命令在: (1),git config --global user.name xxx(名字) //若不设置 那么下次提交代码时会报错 其次该设置名字和…

【运维篇】Redis常见运维命令详解

文章目录 1. 前言2. 连接管理命令详解2.1 AUTH命令2.2 PING命令2.3 SELECT命令2.4 QUIT命令 3. 服务器管理命令详解3.1 FLUSHALL命令3.2 SAVE/BGSAVE命令3.3 SHUTDOWN命令 4. 安全管理命令详解4.1 CONFIG命令4.1.1 CONFIG SET命令用法4.1.2 CONFIG GET命令用法 4.2 AUTH命令 5.…

六、文件上传漏洞

下面内容部分:参考 一、文件上传漏洞解释 解释:文件上传漏洞一般指的就是用户能够绕过服务器的规则设置将自己的木马程序放置于服务器实现远程shell(例如使用蚁剑远程连接),常见的木马有一句话木马(php) 无需启用sho…