数据结构之哈夫曼编码

要做课设啦!!疯狂赶DDL!!冲!

文本压缩

文本压缩是一项非常重要的技术,压缩和解压来处理文件可以减少文档在磁盘上的空间,从而使保存和传递都更加有效。
简单来说,压缩就是对文本进行重新编码,以减少不必要的空间。
哈夫曼编码就是一种最基本的压缩编码的方法。

哈夫曼树

所谓哈夫曼编码节约空间、时间的原理在我看来就是:给出现频率多的字符较短的编码,给出现频率低的字符较长的编码,以此减少编码长度。
在这里插入图片描述
来看两张图,第一张是一棵普通二叉树,第二张是一棵哈夫曼树。
我们通常将,带权路径最小的二叉树称为哈夫曼树。

构造哈夫曼树的办法

比如有一串由A,B,C,D,E构成的字符,你将字符和出现的频率排成以下的序列:
A5,E10,B15,D30,C40

  1. 将有权值的节点按照权值大小从小到大排列:A5,E10,B15,D30,C40
  2. 取头两个最小权值的节点作为一个新节点N1的两个子节点,权值较小的为左孩子,权值较大的为右孩子,新节点的权值为两个叶子权值的和,即15。
  3. 将N1替代A与E,插入有序序列,保持从小到大序列:N1(15),B15,D30,C40.
  4. 重复步骤2,将N1与B作为一个新节点N2的两个子节点。如图,N2的权值为15+15=30.
    在这里插入图片描述
  5. 将N2替换N1与B,插入有序序列中,保持从小到大排列。即:N2(30),D30,C40。
  6. 重复步骤2,将N2与D作为一个新节点N3的两个子节点。
  7. 不停重复步骤2,直至所有节点都被放入树中,即构造成功。
    在这里插入图片描述

哈夫曼编码

将所构造的哈夫曼树的左权值改为0,右权值改为1。
在这里插入图片描述
这时,对所有字符用从根到叶子所经过的路径的0或1来编码,来得到最终的哈夫曼编码;
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值