哈弗曼树和哈弗曼编码
来源:互联网 发布:淘宝客api怎么用 编辑:程序博客网 时间:2024/05/15 21:54
最近总有人问我哈夫曼编码的问题,因此博主决定写一篇文章为大家捋一捋。
我们直接通过一个例子来了解一下哈夫曼编码,如下:
已知一个文件中各个字符及其对应的频率如下所示:
字符 a b c d e f
频率 45 13 12 16 9 5
若采用哈夫曼编码,则字符序列“face”对应的编码为:
要求得哈夫曼编码我们首先需要画出哈夫曼树
1) 将字符按照频率从小到大进行排序:
f 5 e 9 c12 b 13 d 16 a 45
此时最小的两个为 f、e,我们将最小的作为左孩子,另一个作为右孩子,形成一个新的结点p1此时p1频率为14
2) 我们将新形成的结点和剩余的结点再次按照频率从小到大进行排序:
c 12 b13 p1 14 d 16 a 45
此时将c、b形成新结点p2,p2的频率为25
3) 继续将新旧结点排序:
P1 14 d16 p2 25 a 45
将p1、d 形成新结点p3,p3的频率为30
4) 继续排序:
P2 25 p3 30 a 45
由p2、p3得到p4,p4的频率为55
5) 剩下p4和a合成p5
6) 此时该题的哈夫曼树就已经画出来了,左分支为0,右分支为1,如图:
此时就可以得到“face”的哈夫曼编码为:110001001101
以上为博主遇到哈夫曼编码时的求解过程,希望能够帮助到你们
- 哈弗曼树和哈弗曼编码
- 数据结构&&哈弗曼树和哈弗曼编码
- 【树】哈弗曼树和哈弗曼编码
- 哈弗曼编码和译码
- 哈弗曼编码和译码.cpp
- 4.5.3 哈弗曼树(Huffman)树和哈弗曼编码
- 哈弗曼树及哈弗曼编码
- 哈弗曼树与哈弗曼编码
- 哈弗曼树与哈弗曼编码
- 哈弗曼树与哈弗曼编码
- 哈弗曼树的构造、什么是哈弗曼编码和怎样构造一颗编码代价最小又无二义的二叉树--用哈弗曼树
- 视频编码:帧编码和场编码
- unicode编码和ansi编码
- 软编码 和 硬编码
- 编码字符集和字符集编码
- URL编码和网页编码
- 帧编码和场编码
- 变换编码和预测编码
- ubuntu下apt-get安装和彻底卸载mysql
- IS-IS路由器——Level-1-2路由器
- Windows上搭建Git服务器说明
- 开启程序员之路
- Windows 查询执行中的进程
- 哈弗曼树和哈弗曼编码
- JavaWeb 常见术语 Wiki(持续更新)
- C++ Thread Local Storage
- 命令cmd
- android 高德地图
- C/C++ OpenCV设置感兴趣区域ROI
- mysql索引总结----mysql 索引类型以及创建
- iFunk:最美的风景只在走过的路上
- 一个函数有多少行代码比较合适?