数据结构课件ppt第06章03.pptVIP

  1. 1、本文档共47页,可阅读全部内容。
  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文档。上传文档
查看更多
数据结构课件ppt第06章03

6.5 线索二叉树 线索 线索链表 线索二叉树 以二叉链表为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在任一遍历序列中的前驱和后继信息。 利用n个结点的二叉链表必定存在n+1个空链域,来存放结点的前驱和后继信息。 线索:指向前驱和后继的指针。 线索链表:包含“线索”的存储结构。 线索二叉树:加上线索的二叉树。 线索化:对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化。 有如下规定: 先序序列:A B C D E F G H K 对右图进行先序线索化。 对每个结点,如果该结点没有左子树,加上线索,指向其前驱。若该结点没有右子树,加上线索指向其后继。 中序线索链表 树与森林 掌握三个问题: 树的存储结构 树与二叉树的转换、森林与二叉树的转换 树和森林的遍历 一、双亲表示法: 树中每个结点存放在一个数组中,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置。 双亲表示法这种存储结构利用了每个结点(除根之外)只有唯一双亲的性质。 可以很快实现parent(T,cur_e)操作,因此可以反复调用parent操作,找到树的根结点。 但是求结点的孩子结点时需要遍历整个结构。 由于树中每个结点的孩子结点不唯一,因此不能按类似双亲表示法来存储。 孩子链表表示法: 把每个结点的孩子结点排列起来,以单链表作存储结构。n个结点有n个孩子链表。 n个头指针组成一个顺序表(数组)。 便于涉及孩子的操作,不适于查找双亲的操作。 孩子双亲链表表示法: 加入双亲结点的位置域。 以二叉链表作为树的存储结构。 链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点,分别命名为firstchild域和nextsibling域。 树和二叉树的转换 森林和二叉树的转换 树与二叉树的对应关系 二叉树和树都可以用二叉链表作为存储结构,因此,二叉树和树之间有一个对应关系。 任何一棵树有唯一对应的二叉树,其右子树必空(原因?)。 由此,树的各种操作均可对应二叉树的操作来完成。 应当注意的是,和树对应的二叉树,其左、右子树的概念已改变为: 左是孩子,右是兄弟。 给定一棵树,可以找到唯一的一棵二叉树与之对应。 typedef struct CSNode{ ElemType data; struct CSNode *firstchild, *nextsibling; } CSNode, *CSTree; C语言的类型描述: 结点结构: firstchild data nextsibling A B C D E F G A B C E D F G 森林和二叉树的对应关系 设森林 F = ( T1, T2, …, Tn ); T1 = (root,t11, t12, …, t1m); 二叉树 B =( LBT, Node(root), RBT ); * * 遍历二叉树的结果是, 求得结点的一个线性序列。 A B C D E F G H K 例如: 先序序列: A B C D E F G H K 中序序列: B D C A H G K F E 后序序列: D C B H K G F E A 何谓线索二叉树? 对线索链表中结点的约定: 在二叉链表的结点中增加两个标志域, lchild LTag data RTag rchild LTag=0: lchild域指示结点的左孩子 LTag=1: lchild域指示结点的前驱 RTag=0: rchild域指示结点的右孩子 RTag=1: rchild域指示结点的后继 若该结点的左子树不空,则Lchild域的指针指向其左子树,且左标志域的值为“指针 Link”;否则,Lchild域的指针指向其“前驱”,且左标志的值为“线索 Thread” 。 若该结点的右子树不空, 则rchild域的指针指向其右子树, 且右标志域的值为 “指针 Link”; 否则,rchild域的指针指向其“后继”, 且右标志的值为“线索 Thread”。 线索链表:包含五个域(lchild、LTag、data、RTag、rchild)的结点构成的二叉链表作为二叉树的存储结构。 A B C D E F G H K NIL typedef struct BiThrNod { TElemType data; struct BiThrNod

文档评论(0)

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

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

版权声明书
用户编号:7065201001000004

1亿VIP精品文档

相关文档