第7章 zzh树形结构.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章 zzh树形结构

仿照线性表的存储结构,在二叉树的线索链表上也添加一个头结点head,头结点的指针域的安排是: ◆ Lchild域:指向二叉树的根结点; ◆ Rchild域:指向中序遍历时的最后一个结点; ◆ 二叉树中序序列中的第一个结点Lchild指针域和最后一个结点Rchild指针域均指向头结点head。 赫夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,有着广泛的应用。 最优二叉树(Huffman树) 1 基本概念 ① 结点路径:从树中一个结点到另一个结点的之间的分支构成这两个结点之间的路径。 ② 路径长度:结点路径上的分支数目称为路径长度。 ③ 树的路径长度:从树根到每一个结点的路径长度之和。 ④ 结点的带权路径长度:从该结点的到树的根结点之间的路径长度与结点的权(值)的乘积。 权(值):各种开销、代价、频度等的抽象称呼。 ⑤ 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记做: WPL=w1?l1+w2?l2+?+wn?ln=∑wi?li (i=1,2,?,n) 其中:n为叶子结点的个数;wi为第i个结点的权值; li为第i个结点的路径长度。 ⑥ Huffman树:具有n个叶子结点(每个结点的权值为wi) 的二叉树不止一棵,但在所有的这些二叉树中,必定存在一棵WPL值最小的树,称这棵树为Huffman树(或称最优树) 。 在许多判定问题时,利用Huffman树可以得到最佳判断算法。 如图6-24是权值分别为2、3、6、7,具有4个叶子结点的二叉树,它们的带权路径长度分别为: (a) WPL=2?2+3?2+6?2+7?2=36 ; (b) WPL=2?1+3?2+6?3+7?3=47 ; (c) WPL=7?1+6?2+2?3+3?3=34 。 其中(c)的 WPL值最小,可以证明是Huffman树。 2 Huffman树的构造 ① 根据n个权值{w1, w2, ?,wn},构造成n棵二叉树的集合F={T1, T2, ?,Tn},其中每棵二叉树只有一个权值为wi的根结点,没有左、右子树; ② 在F中选取两棵根结点权值最小的树作为左、右子树构造一棵新的二叉树,且新的二叉树根结点权值为其左、右子树根结点的权值之和; ③ 在F中删除这两棵树,同时将新得到的树加入F中; ④ 重复②、③,直到F只含一颗树为止。 构造Huffman树时,为了规范,规定F={T1,T2, ?,Tn}中权值小的二叉树作为新构造的二叉树的左子树,权值大的二叉树作为新构造的二叉树的右子树;在取值相等时,深度小的二叉树作为新构造的二叉树的左子树,深度大的二叉树作为新构造的二叉树的右子树。 图6-25是权值集合W={8, 3, 4, 6, 5, 5}构造Huffman树的过程。所构造的Huffman树的WPL是: WPL=6?2+3?3+4?3+8?2+5?3+5?3 =79 6.6.2 赫夫曼编码及其算法 1 Huffman编码 在电报收发等数据通讯中,常需要将传送的文字转换成由二进制字符0、1组成的字符串来传输。为了使收发的速度提高,就要求电文编码要尽可能地短。此外,要设计长短不等的编码,还必须保证任意字符的编码都不是另一个字符编码的前缀,这种编码称为前缀编码。 Huffman树可以用来构造编码长度不等且译码不产生二义性的编码。 设电文中的字符集C={c1,c2, ?,ci, ?,cn},各个字符出现的次数或频度集W={w1,w2, ?,wi, ?,wn}。 Huffman编码方法 以字符集C作为叶子结点,次数或频度集W作为结点的权值来构造 Huffman树。规定Huffman树中左分支代表“0”,右分支代表“1” 。 从根结点到每个叶子结点所经历的路径分支上的“0”或“1”所组成的字符串,为该结点所对应的编码,称之为Huffman编码。 由于每个字符都是叶子结点,不可能出现在根结点到其它字符结点的路径上,所以一个字符的Huffman编码不可能是另一个字符的Huffman编码的前缀。 若字符集C={a, b, c, d, e, f}所对应的权值集合为W={8, 3, 4, 6, 5, 5},如图6-25所示,则字符a,b, c,d, e,f所对应的Huffman编码分别是:10,010,011,00 ,110,111。 Huffman树中有n个叶子结点, Huffman树共有2n-1个结点,则可存储在大小为2n-1的一维数组中。 本章小结 掌握树的相关概念:树、结点的度、树的度、分支结点、叶子结点、儿子结点、双亲结点、树

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档