《数据结构》(C语言版)第六章.pptVIP

  1. 1、本文档共153页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》(C语言版)第六章

第六章 树和二叉树 本章主要内容: 树的类型定义 二叉树的类型定义 二叉树的遍历 线索二叉树 树和森林的表示方法 树和森林的遍历 哈夫曼树与哈夫曼编码 本章的重点: 树的类型定义 二叉树的类型定义 线索二叉树 树和森林的遍历 哈夫曼树与哈夫曼编码 本章的难点: 线索二叉树 树和森林的遍历 递归算法到非递归算法的转换 中序遍历序列:B D A C 3、建立二叉树的存储结构 不同的定义方法相应有不同的存储结构的建立算法 6.3.2 线索二叉树 何谓线索二叉树? 线索链表的遍历算法 如何建立线索链表? 为什么要建线索链表存储结构? 1、在二叉链表中只能得到左、右孩子的信息,得不到任一序列前驱、后继的信息,这种信息只能在遍历的动态过程得到。 2、如果在存储结构中加上前驱、后继的信息,遍历算法将会简单许多。 3、怎样加? 在每个结点上再加两个指针域:合适吗? 利用空链域!! n个结点的二叉树其二叉链表的存储结构有几个空链域? n+1!!! 同时还要在每个结点中加入两个标志,区分线索还是指针。 6.6 哈 夫 曼 树 及 其 应 用 最优树的定义 如何构造最优树 前缀编码 举例:利用最优二叉树得到最佳判 定算法 要编制将百分制转换成五分制的程序: if(a60) b=“E”; else if(a70) b=“D”; else if(a80) b=“C”; else if(a90) b=“B”; else b=“A”; 对应的判定树 if(a<80 a=70) b=“C”; else if(a90a=80) b=“B”; else if(a70a=60) b=“D”; else if(a60) b=“E”; else b=“A”; 对应的判定树 对应的判定树 1.Huffman算法的思路: ——权值大的结点用短路径,权值小的结点用长路径。 2.构造Huffman树的步骤: ——对权值的合并、删除与替换 3. Huffman树中没有度为1的结点 为了减少码的长度,可以设计不等码,在电文中出现次数较多的字符尽可短。 如:A:0 B:00 C:1 D:01 上述编码就变为:000011010 长度为9,但是这样的码无法译码。 原因是A的编码是B的编码的前缀,又是D的编码的前缀。 因此,要设计长短不等的编码,必须是任意字符的编码不是另一字符编码的前缀,这种编码称为“前缀编码”。 为什么哈夫曼编码是一种最优前缀编码?? 哈夫曼树上任一个从根到叶子结点的路径都不可能是根到另一个叶子结点的一部分,因此必定是前缀码. 哈夫曼树的带权路径长度最短,得到的哈夫曼树编码也是最短的. Huffman编码举例 w={ 7, 19, 2, 6, 32, 3, 21, 10 } 1.一棵二叉树的广义表表示为a(b(c,d),e(f(,g))),它含有双亲结点______个,单分支结点______个,叶子结点______个。 2.对于一棵具有n个结点的二叉树,对应二叉链表中指针总数为________个,其中________个用于指向孩子结点,________个指针空闲着。 3.一棵二叉树广义表表示为a(b(d(,h)),c(e,f(g,i(k)))),该树的结点数为________个,深度为________。 4.假定一棵二叉树广义表表示为a(b(c),d(e,f)),则对它进行的先序遍历结果为____________,中序遍历结果为____________,后序遍历结果为____________,按层遍历结果为________。 5.假定一棵普通树的广义表表示为a(b(e),c(f(h,i,j),g),d),则先根遍历结果为____________,按层遍历结果为_________。 树的计数 问题提出: 具有n个结点的不同形态的树有多少棵? 在这里先讨论二叉树的情况,再推广到树. 几个概念 二叉树T和T’相似:二者都为空树或者二者均不为空树,且他们的左右子树分别相似。 二叉树T和T’等价:二者不仅相似,而且所有对应结点上的数据元素均相同。 具有n个结点的不同形态的二叉树有多少棵?(即具有n个结点,互不相似的二叉树的数目) 通过证明:为(1/n+1)×(2n!)/n!n! 由二叉树的计数可以推得树的计数:由于任何一棵树可以转换成一棵没有右子树的二叉树,因此:具有n个结点的 不同形态的 树的数目tn和具有n-1个结点的互不相似的二叉树的 数目相同。 已知一棵树的的前序和中序序列能否唯一确定一棵二叉树? 例:前序序列:A B C D E F G 中序序列:C B E D A F G 已知

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档