《考研408数据结构》第六章(5.5树的应用)复习笔记

一、哈夫曼树和哈夫曼编码(最常考)

1、基本概念

2、哈夫曼树构造(重要)

【超级简单】

  • 原理就是每次都选【2个权值最小的节点】,他们相加构成他俩的【父根节点】
    • 然后这两个节点因为依旧构成了一个【最小生成树】,就不再参与计算
  • 下一轮在【剩下的节点】和【刚刚生成的父根节点】里
    • 再找【2个最小节点】构成【最小生成树】

3、哈夫曼编码(简单理解)

意思就是【根节点--->到每个叶节点】的路径数,分别代表一个【字符】

  • 可分为3类:
    • 【固定长度编码】
      • 所有【字符】都用【固定位数的编码】表示
    • 【可变长编码】和【前缀编码】
      • 【可变长编码】:所有【字符】都用【不同位数的编码】表示
        • 但是一旦【某个字符编码】=【另一字符前缀】,那么一连起来就无法区分谁是谁了
      • 【前缀编码】:解决上面的问题,要求没有1个【字符编码】等于【另一字符编码的前缀】表示

那么究其原理,电报里的【哈夫曼编码长度】就等于【树的带权路径长度】,我们想要编码越短越好,那就要构造【哈夫曼树】使得【带权路径长度最短】!!!同时也符合【前缀编码】要求

注意:哈夫曼树形状不唯一,但是【WPL带权路径长度】唯一!!!

二、并查集(还未考察过)

1、用【树和森林】表示【集合】的方式

用的是【树】的【双亲表示法】!!!

2、要干什么?

3、支持的操作

简单看看吧,够清晰了,看不懂也可以不学,反正出的概率不高

相关推荐
闪闪发亮的小星星2 小时前
开普勒三大定律
笔记
自传.4 小时前
尚硅谷 Vibe Coding|第一章 AI 编程基础理论 学习笔记
笔记·学习·尚硅谷·vibe coding
退休倒计时4 小时前
【每日一题】LeetCode 53. 最大子数组和 TypeScript
数据结构·算法·leetcode·typescript
2601_961875244 小时前
法考资料2026|全套|资料已整理
数据结构·算法·链表·贪心算法·eclipse·线性回归·动态规划
chase。5 小时前
【学习笔记】SimpleVLA-RL:通过强化学习扩展 VLA 训练
笔记·学习
AOwhisky6 小时前
Redis 学习笔记(第一期):概述、安装配置与核心理论
运维·数据库·redis·笔记·学习·云计算
智者知已应修善业6 小时前
【51单片机8位数码管同时倒计时从9999】2024-1-25
c++·经验分享·笔记·算法·51单片机
AOwhisky6 小时前
Redis 学习笔记(第四期):高可用与集群(哨兵 + Cluster + 容器化)
linux·运维·数据库·redis·笔记·学习·缓存
dtq04247 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法