《数据结构与算法》总结(七)哈夫曼树

本文详细介绍了哈夫曼编码的概念及其在数据压缩中的应用,通过一个实例展示了如何将字符串转换为哈夫曼编码,以及如何构建哈夫曼树。文章还探讨了哈夫曼树的特性,包括其是最优二叉树,每个编码独一无二且非前缀编码。此外,还提及了哈夫曼编码与带权路径长度的关系,以及在iOS开发中可能遇到的相关面试问题。
摘要由CSDN通过智能技术生成
目录
  • 哈夫曼编码(Huffman Coding)
  • 哈夫曼树
  • 构建哈夫曼树
  • 构建哈夫曼编码
一 哈夫曼编码(Huffman Coding)

哈夫曼编码,又称为霍夫曼编码,它是现代压缩算法的基础

假设要把字符串【ABBBCCCCCCCCDDDDDDEE】转成二进制编码进行传输

  • 可以转成ASCII编码(6569,10000011000101),但是有点冗长,如果希望编码更短呢?

  • 可以先约定5个字母对应的二进制

A B C D E
000 001 010 011 100

对应的二进制编码:

000001001001010010010010010010010010011011011011011011100100 

一共20个字母,转成了60个二进制位

如果使用哈夫曼编码,可以压缩至41个二进制位,约为原来长度的68.3%

二 哈夫曼树

先计算出每个字母的出现频率(权值,这里直接用出现次数),【ABBBCCCCCCCCDDDDDDEE】

A B C D E
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>