赫夫曼树和赫夫曼编码
来源:互联网 发布:mac dock透明 编辑:程序博客网 时间:2024/05/17 04:23
赫夫曼树:
1、先把有权值的叶子节点按照从小到大的顺序排成一个有序序列,即:A(5),E(10),B(15),D(30),C(40)。
2、取前两个权值最小的结点即A(5)和E(10),作为一个新的结点N1的两个子节点,结点权值较小的作为左结点,即A为左结点,E为右结点,N1的权值为两个结点权值的和,即5+10=15。
3、将N1替换A和E,放到原序列里,重新排序,即:N1(15),B(15),D(30),C(40)。重复步骤2,取出N1(15),B(15),组成新的结点N2,N2权值为30。
4、将N2替换N1和B插入到序列里,即N2(30),D(30),C(40),重复步骤2,取出N2(30),D(30),组成新的结点N3,N3权值为60。
5、剩下N3(60)和C(40),将他俩组成新的结点T,C为左结点,N3为右结点。生成赫夫曼树如下图所示:
赫夫曼编码:
假设6个字母频率为A 27,B 8,C 15,D 15,E 30,F 5,合起来正好是100%,将他们排成赫夫曼树如下所示:
将权值左分支改为0,右分支改为1,如下图所示:
此时,我们对六个字母用其从跟到叶子结点所经过的路径的0和1来编码,可以得到如下:
A:01
B:1001
C:101
D:00
E:11
F:1000
双方约定好赫夫曼树后,也可以根据赫夫曼编码来解码,等到源码。
- 赫夫曼树和赫夫曼编码
- 赫夫曼树和赫夫曼编码
- 赫夫曼树和赫夫曼编码
- 赫夫曼树和赫夫曼编码
- 赫夫曼树和赫夫曼编码
- 赫夫曼树、赫夫曼编码和JAVA实现
- 赫夫曼编码和实现
- 数据结构:赫夫曼树和赫夫曼编码的存储表示
- C语言数据结构——赫夫曼树和赫夫曼编码
- 赫夫曼树与赫夫曼编码
- 赫夫曼树与赫夫曼编码
- 赫夫曼树与赫夫曼编码
- 赫夫曼树 赫夫曼编码
- 赫夫曼树与赫夫曼编码
- 赫夫曼树以及赫夫曼编码
- 视频编码:帧编码和场编码
- unicode编码和ansi编码
- 软编码 和 硬编码
- 上坡起步
- AsyncTask实现的原理和适用的优缺点
- linux命令解析--cut
- IOS面试题(英文)
- OutLook中服务器端显示邮件未读的问题
- 赫夫曼树和赫夫曼编码
- PKU Online Judge 1054
- DAMAGE:After normal block(#****)
- yahoo 民主自由124
- nginx访问日志中的400
- IOS面试题汇总
- nodejs安装
- Webview 如何支持window.open 和window.close
- emacs24 颜色主题设置