- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Free template from 双亲孩子表示法 树的存储结构小结 双亲表示法 孩子表示法:多重链表表示法、孩子链表表示法 双亲孩子表示法 孩子兄弟表示法 顺序存储:本质上是静态指针 双亲表示法 双亲孩子表示法 链式存储: 多重链表示法 孩子链表表示法 孩子兄弟表示法 非递归前序遍历二叉树 栈是实现递归的最常用的结构 思想: 遇到一个结点,就访问该结点,并把此结点推入栈中,然后遍历它的左子树; 遍历完它的左子树后,从栈顶托出这个结点,并按照它的右链接指示的地址再去遍历该结点的右子树结构。 中序遍历 template class T void BiTree::InOrder (BiNodeT *root) { if (root==NULL) return; //递归调用的结束条件 else { InOrder(root-lchild); //中序递归遍历root的左子树 coutroot-data; //访问根结点的数据域 InOrder(root-rchild); //中序递归遍历root的右子树 } } template class T void BiTree::PostOrder(BiNodeT *root) { if (root==NULL) return; //递归调用的结束条件 else { PostOrder(root-lchild); //后序递归遍历root的左子树 PostOrder(root-rchild); //后序递归遍历root的右子树 coutroot-data; //访问根结点的数据域 } } 非递归中序遍历二叉树 思想: 遇到一个结点,就把它推入栈中,并去遍历它的左子树 遍历完左子树后,从栈顶托出这个结点并访问之,然后按照它的右链接指示的地址再去遍历该结点的右子树。 非递归中序遍历二叉树 template class T void BiTree::InOrderwithoutD (BiNodeT *root) { stack BiNodeT * aStack; BiNodeT * pointer=root; 非递归后序遍历二叉树 思想: 遇到一个结点,把它推入栈中,遍历它的左子树 左子树遍历结束后,还不能马上访问处于栈顶的该结点,而是要再按照它的右链接结构指示的地址去遍历该结点的右子树 遍历遍右子树后才能从栈顶托出该结点并访问之 解决方案: 需要给栈中的每个元素加上一个特征位,以便当从栈顶弹出一个结点时区别是从栈顶元素左边回来的(则要继续遍历右子树),还是从右边回来的(该结点的左、右子树均已遍历) 特征为Left表示已进入该结点的左子树,将从左边回来;特征为Right表示已进入该结点的右子树,将从右边回来 非递归后序遍历二叉树 非递归后序遍历二叉树 算法分析 定义一个栈;从根节点出发开始遍历,p=root,如果,root==NULL, 不进行遍历; 无条件进行下面的工作 如果指针不空,指针打上left标记,并将指针进栈,执行②;否则,执行③ p=p-lchild,重复① 栈顶元素出栈P 查看P的标志,如果标志为right,进行下面的工作,否则,执行⑤ 非递归后序遍历二叉树 访问当前节点P 如果栈空 ,算法结束; 否则,栈顶元素出栈,转④ 修改P的标志,让P重新入栈,p=p-rchild,执行2 非递归后序遍历二叉树 Templateclass T Struct BinNode { T data; BinNodeT *lchild, *rchild; }; template class T void BiTree::PostOrder(BiNodeT *root) { top= -1; //采用顺序栈,并假定栈不会发生上溢 while (root!=NULL | | top!= -1) { while (root!=NULL) { top++; s[top].ptr=roo
您可能关注的文档
最近下载
- 居家护工合同8篇.docx VIP
- 建议信+课件-2025届高三上学期英语一轮复习专项.pptx VIP
- 癌痛规范治疗管理课件.ppt .ppt VIP
- 轻质隔墙板施工工艺要点.pdf
- 公安招警《公安专业科目》公安基本能力知识点汇编.pdf VIP
- 建筑电工考试题库(带答案).pdf VIP
- 2025年重庆市城市建设投资集团有限公司招聘笔试模拟试题及答案解析.docx VIP
- 统编版语文五年级上册第五单元教材解读课件(共38张PPT).pptx VIP
- 2025重庆市城市建设投资(集团)有限公司招聘7人笔试模拟试题及答案解析.docx VIP
- 中职高一英语 高教版(2025)基础模块1 Part02 Unit3 Shopping 课件 (共31张PPT)(含音频+视频).pptx VIP
文档评论(0)