数据结构第六章哈夫曼树.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文档。上传文档
查看更多
* 练习: 以{ 9, 3, 7, 6, 12 , 5}为权值构造一棵Huffman树,并计算它的WPL。 《数据结构》 Huffman编码及其实现 回到最初的问题,传输: CASTCASTSATEATATASA A:7 T:5 C:2 E:1 S:4 C E 3 A S T 7 12 19 7 2 1 4 5 《数据结构》 Huffman编码及其实现 将Huffman树的左子树置0,右子树置1,这样每个叶子都获得一个码字: A(7):0 T(5):10 C(2):1100 E(1):1101 S(4):111 WPL=7×1+5×2+2×4+1×4+4×3=41 这里的WPL就是编码的总长度。 C E 3 A S T 7 12 19 0 0 0 0 1 1 1 1 7 2 1 4 5 解码算法: 《数据结构》 C E 3 A S T 7 12 19 0 0 0 0 1 1 1 1 7 2 1 4 5 11000111101100011110111010110101001001110 CASTCASTSATEATATASA 《数据结构》 * Huffman编码算法实现 1.有n个叶结点的Huffman树中共有m=2n-1个结点,可将这些结点存储在一个一维数组中。 结点结构 weight parent lchild rchild typedef struct{ unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; 2.可以采用动态分配的一维数组存储编码表。 typedef char ** HuffmanCode; * 例:以{7,5,2,4}为权值集合构造哈夫曼树。 weight parent lchild rchild 1 7 0 0 0 2 5 0 0 0 3 2 0 0 0 4 4 0 0 0 5 - 0 0 0 6 - 0 0 0 7 - 0 0 0 (1) 2 4 5 7 1 2 3 4 * weight parent lchild rchild 1 7 0 0 0 2 5 0 0 0 3 2 5 0 0 4 4 5 0 0 5 6 0 3 4 6 - 0 0 0 7 - 0 0 0 (2) 2 4 5 7 6 1 2 3 4 5 * weight parent lchild rchild 1 7 0 0 0 2 5 6 0 0 3 2 5 0 0 4 4 5 0 0 5 6 6 3 4 6 11 0 2 5 7 - 0 0 0 (3) 2 4 5 7 6 11 1 2 3 4 5 6 * (4) 2 4 5 7 6 11 18 1 2 3 4 5 6 7 weight parent lchild rchild 1 7 7 0 0 2 5 6 0 0 3 2 5 0 0 4 4 5 0 0 5 6 6 3 4 6 11 7 2 5 7 18 0 1 6 * 权值={ 5, 29, 7, 8, 14, 23, 3, 11 } 5 1 29 2 7 3 8 4 23 6 3 7 11 8 14 5 1.HT的初态 weight parent lchild rchild 1 5 0 0 0 2 29 0 0 0 3 7 0 0 0 4 8 0 0 0 5 14 0 0 0 6 23 0 0 0 7 1 0 0 0 8 11 0 0 0 9 - 0 0 0 10 - 0 0 0 11 12 - 0 0 0 - 0 0 0 13 - 0 0 0 14 - 0 0 0 15 - 0 0 0 * index weight parent lchild rchild 1 5 0 0 0 2 29 0 0 0 3 7 0 0 0 4 8 0 0 0 5 14 0 0 0 6 23 0 0 0 7 3 0 0 0 8 11 0 0 0 9 0 0 0 0 10 0 0 0 0 11 0 0 0 0 12 0 0 0 0 13 0 0 0 0 14 0 0 0 0 15 0 0 0 0 i = n+1 = 9 在前 i -1 = 8 个元素中 找无父结点且有最小及 次小权值元素的下标 s1 = 7 s2 = 1 构造新结点,存储于 下标为 i = 9 的元素中 权值=最小及次小权和 = 5 + 3 = 8 构造以元素9为根的子 二叉树 9 9 8 7 1 * no weight parent lchild rchild 1 5 9 0 0 2 29 0 0 0 3 7 10 0 0 4 8 10 0 0 5 14 0 0 0 6 23 0 0 0 7 3 9 0 0 8 11 0 0 0 9 8 0 7

文档评论(0)

peace0308 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档