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

05-5.5.1 哈夫曼树

👋 Hi, I’m @Beast Cheng
👀 I’m interested in photography, hiking, landscape…
🌱 I’m currently learning python, javascript, kotlin…
📫 How to reach me --> 458290771@qq.com


喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

带权路径长度

结点的 :有某种现实含义的数值(如:表示结点的重要性等)
结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积
树的带权路径长度:树中所有 叶结点 的带权路径长度之和(WPL:Weighted Path Length)

定义

在含有 n 个带权叶结点的二叉树中,其中 带权路径长度(WPL)最小的二叉树 称为 哈夫曼树 ,也称 最优二叉树

哈夫曼树的构造

给定 n 个权值分别为 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1,w2,...,wn 的结点,构造哈夫曼树的算法描述如下:

  1. 将这 n 个结点分别作为 n 棵仅含一个结点的二叉树,构成森林 F
  2. 构造一个新结点,从F中选取两棵根结点权值最小的树作为新结点的左、右子树,并且将新结点的权值置为左、右子树上根结点的权值之和
  3. 从 F 中删除刚才选出的两棵树,同时将新得到的树加入 F 中
  4. 重复步骤 2 和 步骤 3 ,直至 F 中只剩下一棵树为止

结论:

  1. 每个初始结点最终都成为叶结点,且权值越小的结点到根结点的路径长度越大
  2. 哈夫曼树的结点总数为 2 n − 1 2n-1 2n1
  3. 哈夫曼树中不存在度为 1 的结点

哈夫曼编码

固定长度编码:每个字符用相等长度的二进制位表示
可变长度编码:允许对不同字符用不等长的二进制位表示
若没有一个编码是令一个编码的前缀,则称这样的编码是 前缀编码
由哈夫曼树得到 哈夫曼编码 ——字符集中的每个字符作为一个叶子结点,各个字符出现的频度作为结点的权值,根据之前介绍的方法构造哈夫曼树

http://www.lryc.cn/news/375932.html

相关文章:

  • 夯实网络底座:智能云解析助推新基建发展再上新台阶
  • 时间戳转时间格式小记——个位数月份 如何去掉补位0的情况
  • C++ 矩阵乘法
  • 热门开源项目推荐
  • Study--Oracle-03-数据库常规操作
  • OpenCloudOS 8.8 一键安装 Oracle 19C 单机
  • 【Android】【Java】【每日练手3】Android的四个主要组件使用示例
  • 代码随想三刷二叉树篇2
  • QT pro包含库文件目录符号含义
  • uniapp怎么进行页面的跳转
  • 数据库管理-第205期 换个角度看23ai(20240617)
  • 深入解析PHP函数
  • elasticsearch结构化搜索
  • 街道网格宣传稿件投稿我知道了好方法
  • 电脑有线无线一起用怎么设置
  • 通过LotusScript中的NotesDateTime类来进行时间计算
  • 【前端面经】数组算法题解
  • java架构设计-COLA
  • 【进阶篇-Day3:JAVA接口新特性、代码块、内部类、Lambda表达式、组件等的介绍】
  • 72-UDP协议工作原理及实战
  • 数据结构——顺序表的实现
  • 【牛客面试必刷TOP101】Day33.BM70 兑换零钱(一)和BM71 最长上升子序列(一)
  • 重构与优化-优化函数调用(5)
  • 6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高
  • 今年的618,似乎很平淡!
  • 嵌入式中间件_3.嵌入式中间件的一般架构
  • Java基础 - 练习(二)打印菱形
  • 链表OJ--超详细解析
  • JavaFX 分隔符
  • mysql安装配置教程(Linux+Windows)