六树与叉树遍历叉树.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
六树与叉树遍历叉树

* * 数据结构 6.1 树的定义和基本术语 第六章 树和二叉树 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.5 赫夫曼树及其应用 6.4 树和森林 6.3 遍历二叉树和线索二叉树 一、遍历:按某种搜索路径访问二叉树的每个结 点,而且每个结点仅被访问一次。 树结构(非线性结构)→线性结构。 遍历的实质? A F G E D C B 6.3 遍历二叉树和线索二叉树 一、遍历:按某种搜索路径访问二叉树的每个结 点,而且每个结点仅被访问一次。 A F G E D C B 令:L:遍历左子树 D:访问根结点 R:遍历右子树 有六种遍历方法: DLR,LDR,LRD, DRL,RDL,RLD 1.先序遍历 A B C D E F G I J 先序序列: A B D E J C F I 原则: 若被遍历的二叉树非空, 则 1. 访问根结点; 2. 以先序遍历原则遍历根结点的左子树; 3. 以先序遍历原则遍历根结点的右子树. G Flash 2.中序遍历 中序序列: D B J E A F I C 原则: 若被遍历的二叉树非空, 则 1. 以中序遍历原则遍历根结点的左子树; 2. 访问根结点; 3. 以中序遍历原则遍历根结点的右子树. G A B C D E F G I J Flash 3.后序遍历 后序序列: D J E B I F G C 原则: 若被遍历的二叉树非空, 则 1. 以后序遍历原则遍历根结点的左子树; 2. 以后序遍历原则遍历根结点的右子树; 3. 访问根结点。 A A B C D E F G I J Flash 二、遍历的算法描述 先序遍历 Status PreOrderTraverse(BiTree T, Status(*Visit)(TElemType e)) { if (T) //非空树 {if(Visit(T-data)) if(PreOrderTraverse(T-lchild, Visit)) if(PreOrderTraverse(T-rchild, Visit)) return OK; }else return ERROR; }//PreOrderTraverse ∧ D A B ∧ C ∧ ∧ E ∧ ∧ F ∧ T 指向函数的指针 P129 二、遍历的算法描述 先序遍历 Status PreOrderTraverse(BiTree T) { if (T) { Visit(T-data); PreOrderTraverse(T-lchild, Visit) ; PreOrderTraverse(T-rchild, Visit); return OK; }else return ERROR; }//PreOrderTraverse ∧ D A B ∧ C ∧ ∧ E ∧ ∧ F ∧ T 改造算法 主程序 Pre( T ) 返回 返回 pre(T R); 返回 返回 pre(T R); A C B D T B printf(B); pre(T L); B T A printf(A); pre(T L); A T D printf(D); pre(T L); D T C printf(C); pre(T L); C 返回 T 左是空返回 pre(T R); T 左是空返回 T 右是空返回 T 左是空返回 T 右是空返回 pre(T R); 先序序列:A B D C 二、遍历的算法描述 先序遍历 算法的关键:在前序遍历过某结点的整个左子树后,如何找到该结点的右子树的根指针。 解决办法:在访问完该结点后,将该结点的指针保存在栈中,以便以后能通过它找到该结点的右子树。 在前序遍历中,设要遍历二叉树的根指针为T,则有两种可能: ⑴ 若T!=NULL,则表明?如何处理? ⑵ 若T=NULL,则表明?如何处理? 非递归算法 二、遍历的算法描述 先序遍历 访问结点序列: A 栈S内容: B D A B 先序遍历的非递归实现 A D B C 二、遍历的算法描述 访问结点序列: A 栈S内容: B D A 先序遍历的非递归实现 A D B C

文档评论(0)

taotao0c + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档