网站大量收购独家精品文档,联系QQ:2885784924

六树和叉树.pptVIP

  1. 1、本文档共66页,可阅读全部内容。
  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文档。上传文档
查看更多
六树和叉树

第六章 树和二叉树 第六章 树和二叉树 第六章 树和二叉树 6.1 树的定义和基本术语 6.2 二 叉 树 6.3 遍历二叉树和线索二叉树 遍历的应用 6.4 树和森林 后序(根)遍历(LRD) 若二叉树非空 (1)后序遍历左子树 (2)后序遍历右子树 (3)访问根结点 后序遍历序列: D,G,E,B,F,C,A 例:后序遍历右图所示的二叉树 (1)后序遍历左子树:即按LRD的顺序遍历左子树 (2)后序遍历右子树:即按LRD的顺序遍历右子树 (3)访问根结点A A F G E D C B e d c b f a + * / - - 先序(根)遍历序列:-,+,a,*,b,-,c,d,/,e,f 中序(根)遍历序列:a,+,b,*,c,-,d,-,e,/,f 后序(根)遍历序列:a,b,c,d,-,*,+,e,f,/,- 人们喜欢中序形式的算术表达式,对于计算机,使用后序易于求值 例:先中序遍历序遍历、中序遍历、后序遍历下图所示的二叉树 这实际上是先序遍历的递归定义,我们知道递归定义包括两个部分: 1)基本项(也叫终止项); 2)递归项 若二叉树非空 (1)访问根结点; (2)先序遍历左子树 (3)先序遍历右子树; 先序遍历递归定义 递归项 遍历的递归算法 上面介绍了三种遍历方法,显然是用递归的方式给出的三种遍历方法,以先序为例: 先序遍历(DLR)的定义: 该定义隐含着若二叉树为空,结束 上面先序遍历的定义等价于: 若二叉树为空,结束 ——基本项(也叫终止项) 若二叉树非空 ——递归项 (1)访问根结点; (2)先序遍历左子树 (3)先序遍历右子树; 下面给出先序、中序、后序遍历递归算法,为了增加算法的可读性,这里对书上算法作了简化,没有考虑访问结点出错的情况(即我们假设调用函数visit( )访问结点总是成功的。 先序遍历递归算法? void PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e)) { //采用二叉链表存贮二叉树, visit( )是访问结点的函数。本算法先序 //遍历以为根结点指针的二叉树,对每个数据元素调用函数Visit( ) if (T) { //若二叉树为空,结束返回 , 若二叉树不为空, //访问根结点;遍历左子树,遍历右子树 Visit(T-data); PreOrderTraverse(T-lchild, Visit); PreOrderTraverse(T-rchild, Visit); }//PreOrderTraverse 最简单的Visit函数是: Status PrintElement(TElemType e) {//输出元素e的值 printf(e); return OK; } ∧ D A B ∧ C ∧ ∧ E ∧ ∧ F ∧ T 2 中序遍历递归算法 ? void InOrderTraverse(BiTree T, Status(*Visit)(TElemType e)) { //采用二叉链表存贮二叉树, visit( )是访问结点的函数。本算法中序 //遍历以为根结点指针的二叉树,对每个数据元素调用函数Visit( ) if (T) { //若二叉树为空,结束返回 //若二叉树不为空,遍历左子树,访问根结点,遍历右子树 InOrderTraverse(T-lchild, Visit); Visit(T-data); InOrderTraverse(T-rchild, Visit); }// InOrderTraverse 你能写出后序遍历递归算法了吧 3 后序遍历递归算法 ? void PostOrderTraverse(BiTree T, Status(* Visit)(TElemType e)) { //采用二叉链表存贮二叉树, visit( )是访问结点的函数。本算法中序 //遍历以为根结点指针的二叉树,对每个数据元素调用函数Visit( ) if (T) { //若二

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档