欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

二叉树遍历稿

  • 资源ID:113417445       资源大小:1.17MB        全文页数:25页
  • 资源格式: PPT        下载积分:20积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要20积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

二叉树遍历稿

数据结构数据结构 C C语言语言 AFEDCBG 知识与技能知识与技能过程与方法过程与方法实现价值实现价值 二叉树遍历二叉树遍历的应用。的应用。重重点点难难点点新课引入新课引入- -遍历的应用遍历的应用1 课程讲解课程讲解- - 基础知识基础知识2教学提升教学提升- -课程总结课程总结4实践内容实践内容- -练习讨论练习讨论3巩固巩固拓展拓展- -课后作业课后作业5 3 (2+5) /(9-6)=7先算哪个呢?将算术表达式画将算术表达式画成一棵二叉树成一棵二叉树/+36259它的中序遍历序列为:它的中序遍历序列为:3 * 2 + 5 / 9 6它的后序遍历序列为:它的后序遍历序列为:2 5 + 3 * 9 6 / 中缀表达式(人的思维)后缀表达式(电脑的思维)()()遍历定义遍历定义遍历用途遍历用途遍历方法遍历方法指按某条搜索路线遍访每个结点且指按某条搜索路线遍访每个结点且不重复(又称周游)。不重复(又称周游)。它是树结构插入、删除、修改、查它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一找和排序运算的前提,是二叉树一切运算的基础和核心。切运算的基础和核心。对每个结点的查看通常都是对每个结点的查看通常都是“先左后先左后右右” ” 。二叉树由根、左子树、右子树构成,定义为二叉树由根、左子树、右子树构成,定义为D、 L、R以根结点为参照系以根结点为参照系注:注:“先、中、后先、中、后”的意思是指访问的结点的意思是指访问的结点D D是先于子树出是先于子树出现还是后于子树出现。现还是后于子树出现。v D、 L、R的组合定义了六种可能的遍历方案:的组合定义了六种可能的遍历方案: LDR, LRD, DLR, DRL, RDL, RLDv 若限定若限定先左后右先左后右,则有三种实现方案:,则有三种实现方案: DLR LDR LRD先先序遍历序遍历 中中序遍历序遍历 后后序遍历序遍历 ADBCD L RAD L RD L RBDCD L R先序遍历序列:先序遍历序列:A B D C先序遍历先序遍历(DLR):特点:任意一个结点均处在其子女结点的前面(根结点在前)有什么特点?ADBCD L RAD L RD L RBDCD L RF访问根结点访问根结点F先序先序遍历根的左子树遍历根的左子树F先序先序遍历根的右子树遍历根的右子树递归过程DLR( node *root )if (root !=NULL) printf(“%d”,root-data); DLR(root-lchild); DLR(root-rchild); return(0); ADBCL D RBL D RL D RADCL D R中序遍历序列:中序遍历序列:B D A C特点:根结点左右分别为左右子树的所有结点.中序遍历中序遍历(LDR):讨论中序遍历思想及算法?ADBC后序遍历后序遍历(LRD):讨论后序遍历思想及算法? L R DL R DL R DADCL R DB后序遍历序列:后序遍历序列: D B C A三种遍历算法总结三种遍历算法总结LDR(node *root)if(root !=NULL) LDR(root-lchild); printf(“%d”,root-data); LDR(root-rchild); return(0);LRD (node *root)if(root !=NULL) LRD(root-lchild); LRD(root-rchild); printf(“%d”,root-data); return(0);typedef struct nodeint data; struct node *lchild,*rchild; node;node *root; DLR( node *root )if (root !=NULL) /非空二叉树非空二叉树 printf(“%d”,root-data); /访问访问D DDLR(root-lchild); /递归遍历左子树递归遍历左子树DLR(root-rchild); /递归遍历右子树递归遍历右子树 return(0); 三种遍历算法分析三种遍历算法分析1. 从前面的三种遍历算法可以知道:如果将从前面的三种遍历算法可以知道:如果将print语句抹去,语句抹去,从递归的角度看,这三种算法是完全相同的,或者说这三种从递归的角度看,这三种算法是完全相同的,或者说这三种遍历算法的遍历算法的访问路径是相同的,只是访问结点的时机不同。访问路径是相同的,只是访问结点的时机不同。从虚线的出发点到终点的路径从虚线的出发点到终点的路径上,每个结点经过上,每个结点经过3次次。第第1次次经过时访问,是经过时访问,是先序先序遍历遍历第第2次次经过时访问,是经过时访问,是中序中序遍历遍历第第3次次经过时访问,是经过时访问,是后序后序遍历遍历2. 2. 二叉树遍历的时间效率和空间效率二叉树遍历的时间效率和空间效率时间效率时间效率: : /每个结点只访问一次每个结点只访问一次空间效率空间效率: : /栈占用的最大辅助空间栈占用的最大辅助空间精确值:树深为精确值:树深为k k的递归遍历需要的递归遍历需要k+1k+1个辅助单元个辅助单元AFEDCBG实践内实践内容-练习讨论练习讨论例例1:先序遍历的结果是:先序遍历的结果是:中序遍历的结果是:中序遍历的结果是:后序遍历的结果是:后序遍历的结果是: A B CD E口诀:口诀:D DLRLR先序遍历,即先序遍历,即先根再左再右先根再左再右L LD DRR中序遍历,即中序遍历,即先左再根再右先左再根再右LRLRD D后序遍历,即后序遍历,即先左再右再根先左再右再根实践内实践内容-练习讨论练习讨论ABCDEFGHK例例2:先序序列:先序序列:中序序列:中序序列:后序序列:后序序列:A B C D E F G H KB D C A E H G K FD C B H K G F E A知识应识应用-表达达式计计算+*A*/EDCB先序遍历结果先序遍历结果+ * * / A B C D E前缀表示法前缀表示法中序遍历结果中序遍历结果A / B * C * D + E中缀表示法中缀表示法后序遍历结果后序遍历结果A B / C * D * E +后缀表示法后缀表示法层次遍历结果层次遍历结果+ * E * D / C A B例例3 3:用二叉树表示算术表达式用二叉树表示算术表达式特别讨论特别讨论例:例:已知一棵二叉树的已知一棵二叉树的中序序列中序序列和和后序序列后序序列分别是分别是BDCEAFHGBDCEAFHG 和和 DECBHGFADECBHGFA,请画出这棵二叉树。,请画出这棵二叉树。分析:分析:由后序遍历特征,根结点必在后序序列尾部由后序遍历特征,根结点必在后序序列尾部(即(即A A);由中序遍历特征,根结点必在其中间,而且其左部必全由中序遍历特征,根结点必在其中间,而且其左部必全部是左子树的子孙部是左子树的子孙(即(即BDCEBDCE),其右部必全部是右子树的,其右部必全部是右子树的子孙子孙(即(即FHGFHG);继而,根据后序中的继而,根据后序中的DECBDECB子树可确定子树可确定B B为为A A的左孩子,根的左孩子,根据据HGFHGF子串可确定子串可确定F F为为A A的右孩子;以此类推。的右孩子;以此类推。特别讨论:特别讨论:已知中序遍历:已知中序遍历:B D C E A F H G已知后序遍历:已知后序遍历:D E C B H G F A(B D C E)( F H G)A (D C E)BFGHCD EABBACCD C E知识拓展知识拓展利用遍历建立二叉树利用遍历建立二叉树用空格字符表示用空格字符表示无孩子无孩子或指针或指针为空为空如何把二叉树存入电脑内?如何把二叉树存入电脑内?怎样利用遍历建立一棵二叉树?怎样利用遍历建立一棵二叉树?例:将下面的二叉树以二叉链表形式存入计算机内。例:将下面的二叉树以二叉链表形式存入计算机内。考虑考虑1 1:输入结点时怎样表示:输入结点时怎样表示“无孩子无孩子”?考虑考虑2 2:以何种遍历方式来输入和建树?:以何种遍历方式来输入和建树?将二叉树按先序遍历次序输入:将二叉树按先序遍历次序输入:A B CA B C D ED E G G F F (/n)(/n)以先序遍历最为合适,以先序遍历最为合适,让每个结点都能及时让每个结点都能及时被连接到位。被连接到位。字符串输完后字符串输完后应当再应当再加一特殊的结束符号加一特殊的结束符号(如如$),因为,因为 无无法惟一表示结束。法惟一表示结束。知识拓展知识拓展利用遍历建立二叉树利用遍历建立二叉树建树算法:建树算法:Status CreateBiTree( BiTree &T ) /构造二叉树构造二叉树T Tscanf(“%c”,&ch);If (ch=) T=NULL; else if(!(T=( BiTNode*)malloc(sizeof(BiTNode)exit(overflow); T-data=ch; /生成根结点生成根结点 CreateBiTree(T-lchild); /构造左子树构造左子树 CreateBiTree(T-rchild); /构造右子树构造右子树 return OK; /CreateBiTree/CreateBiTree输入序列:输入序列: A B C D E G F 二叉树的遍历二叉树的遍历定义、用途、方法定义、用途、方法中序遍历:左、根、右中序遍历:左、根、右先序遍历:根、左、右先序遍历:根、左、右后序遍历:左、右、根后序遍历:左、右、根利用先序遍历建立二叉树利用先序遍历建立二叉树表达式的计算顺序表达式的计算顺序遍历算法:递归遍历算法:递归遍历规则遍历规则问题引入问题引入遍历的概述遍历的概述遍历的应用遍历的应用特别讨论特别讨论如何利用遍历构造一棵二叉树?如何利用遍历构造一棵二叉树?遍历效率:遍历效率:O(n)把二叉树的遍历算法改写成程序进行上机调试。把二叉树的遍历算法改写成程序进行上机调试。写出利用先序遍历创建一棵二叉树的完整算法。写出利用先序遍历创建一棵二叉树的完整算法。1 1、如右图所示:写出该二、如右图所示:写出该二叉树的前序遍历、中序叉树的前序遍历、中序遍历和后序遍历的序列。遍历和后序遍历的序列。2 2、已知某二叉树的前序遍、已知某二叉树的前序遍历序列为历序列为ABDEFGCABDEFGC,中序,中序序列为序列为DEBGFACDEBGFAC,画出该,画出该二叉树。二叉树。3 3、已知某二叉树的后序遍、已知某二叉树的后序遍历序列为历序列为dabecdabec,中序序,中序序列为列为debacdebac,则它的前序,则它的前序遍历序列为:。遍历序列为:。ECAGFBD商丘工学院商丘工学院 信息与电子工程学院信息与电子工程学院

注意事项

本文(二叉树遍历稿)为本站会员(zh****u6)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!