当前位置: 首页 > news >正文

哈夫曼树的简单介绍

(数据结构 树的补充知识)

哈夫曼树的内容概述

哈夫曼树的定义

哈夫曼树其实的一个比较简单的知识点。那么哈夫曼树的树我们就应该知道这是一个树的结构,衍生出来的知识点。

哈夫曼树(Huffman Tree)是一种带权路径长度最短的二叉树,也称为最优二叉树。由美国计算机科学家David A. Huffman于1952年提出,主要用于数据压缩领域。其核心思想是通过赋予高频字符较短的编码、低频字符较长的编码,从而减少整体编码长度。

哈夫曼树的构建步骤

哈夫曼树的的构建其实用到了一种算法叫:贪心算法,每一次取数组里面最小的数值来构建二叉树,自下而上的构建二叉树,一步一步的构建,直到数组的内容都用完。

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优(局部最优)的决策,从而希望导致全局最优解的算法策略。贪心算法通常用于解决最优化问题,例如最短路径、最小生成树、任务调度等。

  1. 初始化节点集合
    将每个字符及其出现频率(权重)作为独立的叶子节点,构成一个森林。

  2. 合并权重最小的节点
    每次从森林中选出两个权重最小的节点,合并为一个新节点,新节点的权重为两者之和,其左右子树分别为这两个节点。

  3. 重复合并过程
    将新节点加入森林,重复上述合并步骤,直到森林中只剩一棵树,即哈夫曼树。

哈夫曼树的性质

  • 带权路径长度最小:所有叶子节点的权重乘以其到根节点的路径长度之和最小。
  • 前缀码特性:任何字符的编码都不是其他字符编码的前缀,避免解码歧义。
  • 二叉树结构:只有度为0或2的节点,不存在度为1的节点。

哈夫曼编码的应用

  • 数据压缩:如ZIP、JPEG、MP3等格式的压缩算法。
  • 文件加密:通过动态编码提高安全性。
  • 网络传输:减少传输数据量。

示例

图1 哈夫曼树的例题思路

图2 网上的哈夫曼树例题

解题过程:

所有元素 2、4、7、14、9、12、23。

从大到小或者从小到大排列:2、4、7、9、12、14、23

取最小两个:2、4 组成6

先数组最小:6、7、9、12、14、23

取最小两个:6、7 组成13

9、12、13、14、23

取最小两个:9、12组成21

……(以此类推)

最终构建哈夫曼树。

哈夫曼编码

学习了二叉树,有些人会想我们要确定一个二叉树中的某一个节点的位置,不可能只是通过前中后遍历或者层序遍历来确定一个树的位置,这就没办法统一 一定比较明确的位置,我们在整体观察二叉树的,每一个节点只有两个向下的节点,我们联想到这种其实就类似二进制代码一样,通过0表示下左节点,1表示下右节点,而这种就是二叉树编码,如果是在哈夫曼树中就叫哈夫曼编码。

哈夫曼树的特点: 权值越大的结点越靠近根;使用概率越大的字符编码越短, 使用概率越小的字符编码越长。

感谢观看!

悠仁さん

http://www.gsyq.cn/news/1475310.html

相关文章:

  • 一键备份你的QQ空间青春记忆:GetQzonehistory完整导出工具指南
  • 福象商标宝 AI 综合型商标交易平台能力观察:从资质合规到授权过户全解析 - 资讯速览
  • 西门子博图比较指令的‘隐藏’技巧与常见坑点:从数据类型匹配到VARIANT使用避坑指南
  • 高性价比一键生成论文工具势力榜(2026 实测推荐)
  • D2DX宽屏补丁:让暗黑破坏神2在现代PC上完美运行的终极指南
  • 新手福音:用快马AI一键生成你的第一个cc switch下载工具
  • API 签名防重放机制:基于 HMAC-SHA256 的设计与实现
  • 双51内核MCU通用实验板设计:兼容AT89S51与STC89C51的硬件平台
  • Vim 实战:在 VS Code、JetBrains、终端里玩转 Vim
  • 如何用KDiskMark快速诊断Linux磁盘性能问题:终极指南
  • URL编码/解码详解
  • STM8S开发实战:STVD自动生成HEX与BIN文件全攻略
  • 2026亲测:专业AI智能降重工具首选方案
  • GitHub Copilot 教育学生认证教程
  • STM32外部SRAM透明化使用:编译器自动分配与链接脚本配置详解
  • 提升效率:用快马一键生成open design资源聚合站,整合无忧
  • 公众号排版怎么给标题加序号?18款序号标题推荐一键套用简单上手 - 一串葡萄
  • 终极指南:在Obsidian中直接运行30+编程语言的完整解决方案
  • 2026年6月展台设计搭建公司推荐:五大排行专业评测性价比高价格
  • lodash里面的常用方法
  • BTC邮票:比特币链上艺术的「永恒封印」
  • 液动机械手回转臂结构设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 手机App下载安装完全指南:2026最新教程(Android iOS)
  • 终极指南:使用Mod Engine 2轻松为《艾尔登法环》等魂系游戏创建模组
  • Bandcamp音乐下载终极指南:bandcamp-dl让你的音乐库更完整
  • 基于PyTorch的农作物病害图像识别系统:含训练模型、多作物数据集与一键部署脚本
  • 从傅里叶到拉普拉斯:一个‘衰减因子’如何打通信号分析的任督二脉?
  • 实战部署指南:高效配置本地AI代码助手FauxPilot
  • 2026 黄金回收避坑参考指南,入选行业白名单的 “禹竞名奢汇” 贴合要求 - 奢侈品交易观察员
  • 紧急通知:CSDN 2024Q3起强制启用「优质内容优先分发」新策略(附老作者迁移避坑清单)