数据结构第7章 常用二叉树.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 7.3.3 哈夫曼树及其应用 4 结点的带权路径长度:从该结点的到树的根结点之间的路径长度与结点的权(值)的乘积。 5 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记做: WPL=w1?l1+w2?l2+?+wn?ln=∑wi?li (i=1,2,?,n) 其中:n为叶子结点的个数;wi为第i个结点的权值; li为第i个结点的路径长度。 6 Huffman树:具有n个叶子结点(每个结点的权值为wi) 的二叉树不止一棵,但在所有的这些二叉树中,必定存在一棵WPL值最小的树,称这棵树为Huffman树(或称最优树) 。 7.3.3 哈夫曼树及其应用 在许多判定问题时,利用Huffman树可以得到最佳判断算法。 如图7-34-1是权值分别为2、3、6、7,具有4个叶子结点的二叉树,它们的带权路径长度分别为: (b) WPL=2?1+3?2+6?3+7?3=47 ; (a) WPL=2?2+3?2+6?2+7?2=36 ; (c) WPL=7?1+6?2+2?3+3?3=34 。 其中(c)的 WPL值最小,可以证明是Huffman树。 7.3.3 哈夫曼树及其应用 2 3 6 7 3 6 7 2 6 7 2 3 (a) (b) (c) 图7-34-1 具有相同叶子结点,不同带权路径长度的二叉树 2.Huffman树的构造 1 根据n个权值{w1, w2, ?,wn},构造成n棵二叉树的集合F={T1, T2, ?,Tn},其中每棵二叉树只有一个权值为wi的根结点,没有左、右子树; 7.3.3 哈夫曼树及其应用 2 在F中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且新的二叉树根结点权值为其左、右子树根结点的权值之和; 3 在F中删除这两棵树,同时将新得到的树加入F中; 4 重复②、③,直到F只含一颗树为止。 构造Huffman树时,为了规范,规定F={T1,T2, ?,Tn}中权值小的二叉树作为新构造的二叉树的左子树,权值大的二叉树作为新构造的二叉树的右子树;在取值相等时,深度小的二叉树作为新构造的二叉树的左子树,深度大的二叉树作为新构造的二叉树的右子树。 7.3.3 哈夫曼树及其应用 图7-34-2是权值集合W={8, 3, 4, 6, 5, 5}构造Huffman树的过程。所构造的Huffman树的WPL是: WPL=6?2+3?3+4?3+8?2+5?3+5?3 =79 3 4 5 5 6 8 第一步 5 5 6 8 第二步 3 4 7 6 8 第三步 3 4 7 5 5 10 8 第四步 5 5 10 6 3 4 7 13 第六步 1 1 1 1 1 0 0 0 0 0 8 5 5 10 18 6 3 4 7 13 31 图7-34-2 Huffman树的构造过程 第五步 8 5 5 10 18 6 3 4 7 13 7.3.4 哈夫曼编码及其算法 1.Huffman编码 在电报收发等数据通讯中,常需要将传送的文字转换成由二进制字符0、1组成的字符串来传输。为了使收发的速度提高,就要求电文编码要尽可能地短。此外,要设计长短不等的编码,还必须保证任意字符的编码都不是另一个字符编码的前缀,这种编码称为前缀编码。 Huffman树可以用来构造编码长度不等且译码不产生二义性的编码。 设电文中的字符集C={c1,c2, ?,ci, ?,cn},各个字符出现的次数或频度集W={w1,w2, ?,wi, ?,wn}。 7.3.4 哈夫曼编码及其算法 Huffman编码方法 以字符集C作为叶子结点,次数或频度集W作为结点的权值来构造 Huffman树。规定Huffman树中 从所经历的路径分支上的“0”或“1”所组成的字符串,为该结点所对应的编码,称之为Huffman编码。 由于每个字符都是叶子结点,不可能出现在根结点到其它字符结点的路径上,所以一个字符的Huffman编码不可能是另一个字符的Huffman编码的前缀。 若字符集C={a, b, c, d, e, f}所对应的权值集合为W={8, 3, 4, 6, 5, 5},如图7-34-2所示,则字符a,b, c,d, e,f所对应的Huffman编码分别是:10,010,011,00 ,110,111。 练习题 假设用于通信的电文是由字符集{a, b, c, d, e, f, g, h}中的字符构成, 这8个字符在电文中出现的概率分别为{0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档