下载此文档

数据结构哈夫曼树与编码本.ppt


文档分类:IT计算机 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
第六章哈夫曼树及应用
本讲内容



哈夫曼树的定义
带权路径长度最小的二叉树,称为“最优二叉树”,或哈夫曼树。
?
如何计算树的带权路径长度?
树中所有叶子结点的带权路径长度之和。记作,WPL= wklk 。
?
如何计算叶子结点的带权路径长度?
结点的权值乘以该结点的路径长度。
从根结点到该结点的路径上的分支数目。
路径长度
2
7 9
7
5
4
9
2
WPL(T)= 72+52+23+43+92 =60
WPL(T)= 74+94+53+42+21 =89
5
4
哈夫曼树的构建
如何构建哈夫曼树?
问题:根据给定的n个权值{w1, w2, …, wn},构造一棵以这些权值为叶子的哈夫曼树。
哈夫曼算法思想
①根据给定的n个权值{w1, w2, …, wn}构成n棵二叉树的集合F={T1, T2, …, Tn},其中每棵二叉树Ti只有权值为Wi的根结点,其左右子树为空。
②在F中选取两棵根结点的权值最小的二叉树作为左右子树构造一棵新二叉树,新二叉树根结点的权值为其左右子树上根结点的权值之和。
③在F中删除这两棵二叉树,同时将新得到的二叉树加入F中。
④重复②和③,直到F中只剩一棵二叉树为止。
9
例如: 已知权值 W={ 5, 6, 2, 9, 7 }
5
6
2
7
5
2
7
6
9
7
6
7
13
9
5
2
7
6
7
13
9
5
2
7
9
5
2
7
16
6
7
13
29
0
0
0
0
1
1
1
1
00
01
10
110
111
哈夫曼编码
前缀编码
任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。
a: 110
b :00
c: 111
d: 10
e: 01
前缀编码
利用哈夫曼树可以构造一种不等长的二进制编码,并且构造所得的哈夫曼编码是一种最优前缀编码。从根到叶子的路径构成叶子的前缀编码。
哈夫曼编码
有八种字符:a b c d e f g h ,其在通信联络中出现的概率分别为: ,试设计哈夫曼遍码。
设权值 w = { 5 , 29 , 7 ,8 , 14 , 23 ,3 , 11} n = 8
构造过程:
5
29
7
8
14
23
3
11
5
3
8
29
7
8
14
23
11
7
8
15
29
23
11
14
11
19
29
14
23
14
29
29
23
23
42
29
58
100
0
0
0
0
0
0
0
1
1
1
1
1
1
1
a: 0000 b :11
c: 1000 d: 1001
e: 101 f :01
g: 0001 h:001
算法演示
例:字符及权值如下,A(6),B(7),C(1),D(5),E(2),F(8),构建哈夫曼树并计算哈夫曼编码,求WPL。
i
c
weight
parent
lchild
rchild
code
1
2
3
4
5
6
7
8
9
10
11
A
B
C
D
E
F
6
7
1
5
2
8
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
3
5
7
7
8
4
7
8
8
13
1
2
9
9
16
6
8
10
10
29
9
10
11
11
0
1
0
0
1
0
1
1
0
1

数据结构哈夫曼树与编码本 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人nhtmtr11
  • 文件大小1.19 MB
  • 时间2017-07-22