- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计与问题求解
——哈夫曼树
哈夫曼树
什么是路径、路径长度?
在一棵树中,从一个结点往下到另一个结点之间的通路,
称为路径。通路中分支的数目称为路径长度。
Z
二叉树带权路径长度 5
设二叉树有n个带有权值的叶子结点,每个叶子到根的路 X Y
径长度乘以其权值之和称为二叉树带权路径长度。记作 : 3 2
n w —第i 个叶子的权重
WPL wi li l i —第i 个叶子到根的路径长度 WPL=3*2+2*2+5*1=15
i 1 i
哈夫曼树
什么哈夫曼树?
以一些带有固定权值的结点作为叶子所构造的,具有最小带权路径长度的二叉树。
设X、Y、Z权值为3、2、5 ,可以构造多种叶子含权的二叉树,例如
Z X Y
5 3 2
X Y Z Y Z X
3 2 5 2 5 3
WPL=3*2+2*2+5*1=15 WPL=5*2+2*2+3*1=17 WPL=5*2+3*2+2*1=18
哈夫曼树的构造过程
假定有n个具有权值的结点,则哈夫曼树的构造算法如下:
① 根据n个权值,构造n棵二叉树,其中每棵二叉树中只含一个权值为w 的根结点;
i
② 在所有二叉树中选取根结点权值最小的两棵树 ,分别作为左、右子树构造一棵新
的二叉树 ,这棵新的二叉树根结点权值为其左、右子树根结点的权值之和 ;删去原来的
两棵树,留下刚生成的新树 ;
③ 重复执行②,直至最终合并为一棵树为止。
假定有a、b、c、d四个字符,它们的使用权重比为6 ﹕4 ﹕2 ﹕1
6 4 2 1 6 4 3 6 7 13
a
a b c d a b a
b
c d
b
c d
初始状态 步骤1 步骤2 步骤3 c d
哈夫曼树与哈夫曼编码
问 假定有一段报文由a、b、c、d四个字符构成,它们的使用频率比为6 ﹕4 ﹕2 ﹕1 ,
题 请构造一套二进制编码系统,使得报文翻译成二进制编码后无二义性且长度最短
0 1
任一编码方案
一一对应 b a
a -1 b-0 c-10 d-11
文档评论(0)