第7章-树和二叉树第5讲-哈夫曼树
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A. 该树一定是一棵完全二叉树 B. 该树中一定没有度为1的结点 C. 树中两个权值最小的结点一定是兄弟结点 D. 树中任一非叶子结点的权值一定不小于下一层任一
结点的权值 说明:本题为2010年全国考研题
13/15
思考题: 哈夫曼编码用什么用途?
14/15
哈夫曼树
n0个叶子结点,含有权值
构造哈夫曼树:权值越小距离根结点越远 构造哈夫曼编码:权值越小编码越长
哈夫曼编码属0、1二 进制编码
8/15
哈夫曼编码特点:权值越大的字符编码越短,反之越长。
9/15
产生哈夫曼编码
示例的演示
0
42
0
1
19
23
0
1
8
11
0
1
3
5
5: 0 0 0 1
3:0000 8:1111
5:0001 23:01
100 1
58
0
1
29
29
0
1
14
15
0
1
7
8
11:001 29:10
7:1000 14:110
10/15
在一组字符的哈夫曼编码中,不可能出现一个字符的哈夫曼 编码是另一个字符哈夫曼编码的前缀。
例如,有4个字符的编码如下: 100,001,0,1
× 这是哈夫曼编码吗?
哈夫曼编码也称为前缀编码。
11/15
【例(补充)】5个字符有如下4种编码方案,不是前缀编码 的是 。
WPL(T1) = 72+52+23+43+92 =60
WPL(T2) = 74+94+53+42+21=89
具有最小带权路径长度的二叉树称为哈夫曼树(也称最优树)。
3/15
4/15
构造哈夫曼树的过程:
(1)给定的n个权值{W1,W2,…,Wn}构造n棵只有一个叶结点的二叉树, 从而得到一个二叉树的集合F={T1,T2,…,Tn}。
5/15
W={ 0.05, 0.29, 0.07, 0.08, 0.14, 0.23, 0.03, 0.11} 建
立 哈
5
29
7
8
14 23
3
11
夫
曼
100
树
8
示
例 的
42
58
演
示 19
29
15
8
15
3
5
创建完毕
7
8
6/15
哈夫曼树的特点
7/15
规定哈夫曼树中的左分支为0,右分支为1,则从根结点到每个叶 结点所经过的分支对应的0和1组成的序列便为该结点对应字符的编码。 这样的编码称为哈夫曼编码。
(2)在F中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构 造一棵新的二叉树,这棵新的二叉树根结点的权值为其左、右子树根结点权 值之和。
(3)在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树 加入到集合F中。
(4)重复(2)、(3)两步,当F中只剩下一棵二叉树时,这棵二叉树便 是所要建立的哈夫曼树。
15/24
哈夫曼树中: 哈夫曼树满足二叉树的性质 n1=0 没有两个字符的编码相同 没有两个字符编码的前缀相同
16/24
如果一棵哈夫曼树T中共有255个结点,那么 该树用于对几个字符进行哈夫曼编码?
n=255,n1=0 n0=n2+1,总结点数n = n0+n2 = 2n0-1 n0 = (n+1)/2 = 128 所以该树用于对128个字符进行哈夫曼编码。
A.01,0000,0001,001,1 B.011,000,001,010,1 C.000,001,010,011,100 D.0,100,110,1110,1100
说明:本题为2014年全国考研题
12/15
【例(补充)】 对n(n≥2)个权值均不同的字符构成哈 夫曼树,关于该树的叙述中,错误的是 。
17/24
wk.baidu.com
练习:假设用于通讯的电文仅由8个字母A、B、C、D、E、F、 G、H组成,字母在电文中出现的频率分别为:0.07,0.19,0.02, 0.06,0.32,0.03,0.21,0.10。请为这8个字母设计哈夫曼编码。
19/15
设二叉树具有n个带权值的叶结点,那么从根结点到各个叶 结点的路径长度与相应结点权值的乘积的和,叫做二叉树的带 权路径长度WPL。
n
WPL wili i 1
1/15
WPL的计算:
1
2
3
WPL = (2+3)×2 + 1×1=11
2/15
相同的叶结点构造出不同的二叉树
7
5
9
2
4
7
5 9
2 4
结点的权值 说明:本题为2010年全国考研题
13/15
思考题: 哈夫曼编码用什么用途?
14/15
哈夫曼树
n0个叶子结点,含有权值
构造哈夫曼树:权值越小距离根结点越远 构造哈夫曼编码:权值越小编码越长
哈夫曼编码属0、1二 进制编码
8/15
哈夫曼编码特点:权值越大的字符编码越短,反之越长。
9/15
产生哈夫曼编码
示例的演示
0
42
0
1
19
23
0
1
8
11
0
1
3
5
5: 0 0 0 1
3:0000 8:1111
5:0001 23:01
100 1
58
0
1
29
29
0
1
14
15
0
1
7
8
11:001 29:10
7:1000 14:110
10/15
在一组字符的哈夫曼编码中,不可能出现一个字符的哈夫曼 编码是另一个字符哈夫曼编码的前缀。
例如,有4个字符的编码如下: 100,001,0,1
× 这是哈夫曼编码吗?
哈夫曼编码也称为前缀编码。
11/15
【例(补充)】5个字符有如下4种编码方案,不是前缀编码 的是 。
WPL(T1) = 72+52+23+43+92 =60
WPL(T2) = 74+94+53+42+21=89
具有最小带权路径长度的二叉树称为哈夫曼树(也称最优树)。
3/15
4/15
构造哈夫曼树的过程:
(1)给定的n个权值{W1,W2,…,Wn}构造n棵只有一个叶结点的二叉树, 从而得到一个二叉树的集合F={T1,T2,…,Tn}。
5/15
W={ 0.05, 0.29, 0.07, 0.08, 0.14, 0.23, 0.03, 0.11} 建
立 哈
5
29
7
8
14 23
3
11
夫
曼
100
树
8
示
例 的
42
58
演
示 19
29
15
8
15
3
5
创建完毕
7
8
6/15
哈夫曼树的特点
7/15
规定哈夫曼树中的左分支为0,右分支为1,则从根结点到每个叶 结点所经过的分支对应的0和1组成的序列便为该结点对应字符的编码。 这样的编码称为哈夫曼编码。
(2)在F中选取根结点的权值最小和次小的两棵二叉树作为左、右子树构 造一棵新的二叉树,这棵新的二叉树根结点的权值为其左、右子树根结点权 值之和。
(3)在集合F中删除作为左、右子树的两棵二叉树,并将新建立的二叉树 加入到集合F中。
(4)重复(2)、(3)两步,当F中只剩下一棵二叉树时,这棵二叉树便 是所要建立的哈夫曼树。
15/24
哈夫曼树中: 哈夫曼树满足二叉树的性质 n1=0 没有两个字符的编码相同 没有两个字符编码的前缀相同
16/24
如果一棵哈夫曼树T中共有255个结点,那么 该树用于对几个字符进行哈夫曼编码?
n=255,n1=0 n0=n2+1,总结点数n = n0+n2 = 2n0-1 n0 = (n+1)/2 = 128 所以该树用于对128个字符进行哈夫曼编码。
A.01,0000,0001,001,1 B.011,000,001,010,1 C.000,001,010,011,100 D.0,100,110,1110,1100
说明:本题为2014年全国考研题
12/15
【例(补充)】 对n(n≥2)个权值均不同的字符构成哈 夫曼树,关于该树的叙述中,错误的是 。
17/24
wk.baidu.com
练习:假设用于通讯的电文仅由8个字母A、B、C、D、E、F、 G、H组成,字母在电文中出现的频率分别为:0.07,0.19,0.02, 0.06,0.32,0.03,0.21,0.10。请为这8个字母设计哈夫曼编码。
19/15
设二叉树具有n个带权值的叶结点,那么从根结点到各个叶 结点的路径长度与相应结点权值的乘积的和,叫做二叉树的带 权路径长度WPL。
n
WPL wili i 1
1/15
WPL的计算:
1
2
3
WPL = (2+3)×2 + 1×1=11
2/15
相同的叶结点构造出不同的二叉树
7
5
9
2
4
7
5 9
2 4