[2018年必威体育精装版整理]08二叉树的遍历及应用.pptVIP

[2018年必威体育精装版整理]08二叉树的遍历及应用.ppt

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

D (B左) E (B右) B左= (D左) (D右) D =D B右= (E左) (E右) E =E G F (C左) C左= (F左) (F右) F = (F右) F G (F右) F右= (G左) (G右) G =G T= (B左) (B右) B (C左) C A = D E B G F C A * 【例】写出下面二叉树的前序、中序和后序遍历序列。 前序:ABDFGCEH 中序:BFDGAEHC 后序:FGDBHECA A C B D H E F G * 前序遍历(根 左 右) A C B D H E F G A A左子树 A右子树 B B右子树 D F G C C左子树 E H * 中序遍历(左 根 右) A C B D H E F G A A左子树 A右子树 B B右子树 D F G C C左子树 E H * 后序遍历(左 右 根) A C B D H E F G A A左子树 A右子树 B B右子树 D F G C C左子树 E H * 【例】已知一颗二叉树的后序遍历序列和中序遍历序列分别为 EBDCA 和 BEADC ,试画出这颗二叉树。 思路: 由任意一个遍历序列均不能唯一确定一颗二叉树,只有知道中序和后序或中序和前序遍历序列才能唯一确定一颗二叉树。 确定方法: 由前序(或后序)遍历序列确定树或子树的根,再由中序遍历序列确定根的左子树和右子树。 * A B C D E 后序遍历序列:E B D C A (左 右 根) 中序遍历序列:B E A D C (左 根 右) A A E B B B E B C C 确定方法:由前序(或后序)序列确定根 再由中序序列确定左、右子树的范围 * 练习: 已知一颗二叉树的前序遍历序列和中序遍历序列分别为 ABCDEFG 和 CBEDAFG ,试画出这颗二叉树。   * 若二叉树非空,则按以下次序进行(递归)遍历: 访问根结点; 前序遍历根结点的左子树; 前序遍历根结点的右子树。 void PreOrder(BTNode *root) { if(root!=NULL){ coutroot-data; //访问根 PreOrder( root-lchild ); //前序遍历左子树 PreOrder( root-rchild ); //前序遍历右子树 } } A C D E F B G ^ ^ ^ ^ ^ ^ ^ ^ T 前序遍历算法 A B D E C F G * 中序遍历算法 若二叉树非空则按以下次序进行(递归)遍历: 中序遍历根结点的左子树; 访问根结点; 中序遍历根结点的右子树。 void InOrder(BTNode *root) { if(root!=NULL){ InOrder( root-lchild ); //中序遍历左子树 coutroot-data; //访问根 InOrder( root-rchild ); //中序遍历右子树 } } * 后序遍历算法 若二叉树非空则按以下次序进行(递归)遍历: 后序遍历根结点的左子树; 后序遍历根结点的右子树; 访问根结点。 void PostOrder(BTNode *root) { if(root!=NULL){ PostOrder( root-lchild ); //后序遍历左子树 PostOrder( root-rchild ); //后序遍历右子树 coutroot-data; //访问根 } } * 建立二叉树 统计二叉树中结点总数 计算二叉树深度 查找二叉树中值为item的结点 清空二叉树 二叉树的遍历的应用 * 如果遍历序列中没有指明空指针的位置,则需要“前序遍历序列+中序遍历序列”或 “中序遍历序列+后序遍历序列” 才能还原一棵树。 如果在前序遍历序列中以 # 号表明空指针的位置,则只需要一个前序遍历序列就可以还原这棵树。 以二叉树的前序遍历序列建立二叉树 前序:AB### A B # # # * 以二叉树的前序遍历序列建立二叉树 void CreateBTree_Pre(BTNode *root) { //要求按照前序遍历序列输入结点值item char item; cinitem; if(item == #) //如果读

文档评论(0)

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

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

1亿VIP精品文档

相关文档