基本检索与周游.pptxVIP

  1. 1、本文档共41页,可阅读全部内容。
  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文档。上传文档
查看更多
基本检索与周游

2. 二元树周游(遍历)1)周游次序 在二元树的周游中,以D、L、R分别代表访问结点的信息段、访问左子树、访问右子树。则可能的顺序有: ★ LDR:中根次序周游(中根遍历) ★ LRD:后根次序周游(后根遍历) ★ DLR:先根次序周游(先根遍历) ★ RDL:逆中根次序周游 ★ RLD:逆后根次序周游 ★ DRL:逆先根次序周游2)二元树周游算法⑴ 中根次序周游 算法7.1 中根次序周游的递归表示 procedure INORDER(T) //T是一棵二元树。T的每个结点有三个信息段:LCHILD,DATA,RCHILD// if T≠0 then call INORDER(LCHILD(T)) call VISIT(T) call INORDER(RCHILD(T)) endif end INORDER ⑵先根次序周游 算法7.2 先根次序周游的递归表示 procedure PREORDER(T) //T是一棵二元树。T的每个结点有三个信息段:LCHILD,DATA,RCHILD// if T≠0 then call VISIT(T) call PREORDER(LCHILD(T)) call PREORDER(RCHILD(T)) endif end PREORDER⑵后根次序周游 算法7.2 后根次序周游的递归表示 procedure POSTORDER(T) //T是一棵二元树。T的每个结点有三个信息段:LCHILD,DATA,RCHILD// if T≠0 then call POSTORDER(LCHILD(T)) call POSTORDER(RCHILD) call VISIT(T) endif end PREORDERABCDEFGHI左图中:中根次序周游的输出是:FDHGIBEAC先根次序周游的输出是:ABDFGHIEC后根次序周游的输出是:FHIGDEBCAABCDEFGH注: 一棵二元树可由中根遍历序列+先根遍历序列、或中根遍历序列+后根遍历序列唯一确定。但不能由先根遍历序列+后根遍历序列唯一确定。 如已知一棵二元树的中根遍历次序是:DGBEAFHC 先根遍历次序是:ABDGECFH 则这棵二元树唯一确定如下:定理7.1 当输入的树T有n≥0个结点时,设t(n)和s(n)分别表示这些周游算法中的任意一个算法所需要的最大时间和空间。如果访问一个结点所需要的时间和空间是Θ(1),则t(n)=Θ(n), s(n)=Θ(n)。证明:时间:由于已知访问一个结点所需要的时间是Θ(1),故可用常数c1限界。 设T的左子树中的结点数是n1,则t(n)有: t(n)=maxn1{t(n1)+t(n-n1-1)+c1} n≥1 其中,t(0)≤c1。 归纳法证明t(n)≤c2n+c1,其中c2是一使得c2≥2c1的常数。 1)当n=0时,成立 2)假定当n=0,1,…,m-1时均成立。则当n=m时有, 设T是一棵有m个结点的树,T左子树结点数为n1,则 t(n)=maxn1{t(n1)+t(n-n1-1)+c1} ≤maxn1{c2n1+c1+c2(n-n1-1)+c1+c1} =maxn1{c2n+3c1-c2} ≤c2n+c1 同理,存在c2和c1有t(n)≥c2n+c1。所以t(n)=Θ(n)空间:若T的深度为d,则所需空间为Θ(d), d≤n,所以s(n)=Θ(n)。3. 树的周游 1) 树的子树顺序 无序→有序 2)森林F的周游 ⑴ 树的先根次序周游 A.若F为空,则返回 B.访问F的第一棵树的根 C.按树先根次序周游F的第一棵树的子树 D.按树先根次序周游F的其它树 ⑵ 树的中根次序周游 ⑶ 树的后根次序周游T1T1T11…T11T12T1KT12…T1K树转换成二元树方法:设有一棵树T(它的根是T1),人为安排它的子树有序且设为T11,T12,…,T1K。用T1做二元树的根,T11做T1的左子树,然后T1i做T1i-1的右子树,2≤i≤k。 设T是由森林F转换成的二元树则: T的先根次序周游相当于按树先根次序周游访问F T的中根次序周游相当于按树中根次序周游访问F 对T的后根次序周游无类似的自然对应4. 图的检索和周游4.1 宽度优先检索和周游1) 宽度优先检索 ① 从结点v开始,给v标上已到达(或访问)标记——此时称结点v还没有被检测,而当算法访问了邻接于某结点的所有结点时,称该结点被检测了。 ② 访问邻接于v且尚未被访问的所有结点——这些结点是新的未被检测的结点。将这些结点依次放置到一未检测结点表(队列Q)中(末端插入) 。 ③ 标记v已被检测。 ④ 若未检测结点表为空,则算法终止;否则 ⑤ 从未检测结点表的表头取一结点作为下一个待检测结点,重复上述过程。宽度优先算法,自始至终一直通过已找到和未找

文档评论(0)

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

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

1亿VIP精品文档

相关文档