


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二叉树后序遍历的非递归算法。很久以前,我曾经问过一位老师,“二叉树后序遍历的非递归算法怎么实现啊?”老师说,“你可以使用栈来实现。”于是,我就开始了解和学习关于二叉树后序遍历的非递归算法了。
二叉树后序遍历,顾名思义,就是先遍历二叉树的左子树,然后遍历右子树,最后才访问根节点。由于这种遍历方式需要先遍历完左右子树,才能遍历根节点,所以我们需要使用一个栈来记录节点,好让我们回到之前遍历时还未遍历完的节点进行处理。因此,我们需要一个参数来标识当前是否为第一次访问该节点,以及栈来存储中间节点。
具体做法如下:
1.对于任意节点,如果左节点不为空,则将该节点压入栈,并将左节点作为当前节点,重复步骤1。
2.当左子树为空时,先判断右子树是否也为空,如果右子树不为空,则将这个节点的标记改为已访问,并将当前节点设置为右子节点,重复步骤1。
3.如果左右子树均为空或已被访问过,则访问该节点并出栈,将当前节点设置为NULL。
4.重复步骤1到3,直到栈为空。
这就是二叉树后序遍历的非递归算法。下面是详细代码:
```
voidpostOrderTraversal(TreeNode*root){
stack<TreeNode*>nodeStack;
TreeNode*current=root;
TreeNode*lastVisited=nullptr;
while(!nodeStack.empty()||current!=nullptr){
if(current!=nullptr){
nodeStack.push(current);
current=current->left;
}else{
TreeNode*peekNode=nodeStack.top();
if(peekNode->right!=nullptr&&lastVisited!=peekNode->right){
current=peekNode->right;
}else{
cout<<peekNode->val<<"";
lastVisited=peekNode;
nodeStack.pop();
}
}
}
}
```
首先,我们先创建一个空的栈和一个指向根节点的指针current。在遍历过程中,我们需要记录上一次被访问的节点,初始值为nullptr。
我们将current不断的压入栈中,并将current设置为它的左孩子节点,直到current走到二叉树最左边的节点。当current为空时,我们从栈中取出栈顶元素,判断它是否有右子树,并且上一个被访问的节点不是其右子树。如果上一个被访问的节点不是其右子树,说明右子树尚未被遍历。因此,我们应该将current指向其右孩子节点,以此来完成对右子树的遍历。否则,说明右子树已经遍历完成,我们访问当前栈顶元素并将其出栈。然后,我们将lastVisited设置为栈顶元素,以标记它已经被访问过。最后,将current设置为nullptr,让之后从栈中取出的节点不再对其进行左子树遍历。
在这个非递归算法中,我们使用了lastVisited来判断右子树是否已经被遍历。这样能够省去另外一个栈。如果不使用lastVisited变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年南平水务集团(建瓯)城建投资有限公司招聘笔试参考题库附带答案详解
- 2024中国建筑第七工程局有限公司招聘笔试参考题库附带答案详解
- 2024中国一重集团有限公司党群工作部招聘9人笔试参考题库附带答案详解
- 八年级地理上册 第一章 从世界看中国 第一节疆域 第2课时 海陆兼备的大国教学实录 (新版)新人教版
- 年九年级语文上册 第四单元 16《孤独之旅》教学实录 新人教版五四制
- 2023一年级数学下册 三 认识图形 3图形的变化规律教学实录 西师大版
- Module5 Unit 2 I want a Chinese Pen friend. (教学设计)-2024-2025学年外研版(一起)英语六年级上册
- 江苏省苏州张家港市一中七年级信息技术《第五章 电子表格 第三课时 Excel工作表的编辑与美化》教学实录
- 2024年高中化学 第四章 化学与自然资源的开发利用 第1节 开发利用金属矿物和海水资源1教学实录 新人教版必修2
- 2025年数控刃磨床合作协议书
- 2016年初级护师考试《相关专业知识》真题及答案
- 特种设备日管控、周排查、月调度模板
- 2020年现行房屋建筑工程常用材料进场取样复试检验项目规范
- 中医基础理论教学讲稿
- 硫磺安全技术说明书MSDS
- 应急灯、出口指示灯、消防栓、灭火器点检表
- 综合管理中心组织架构图人员编制表及岗位说明书
- 数字化转型对商业银行盈利能力影响的研究
- 《母鸡》课件 王崧舟 千课万人 (图片版不可编辑)
- 阁楼施工协议范本
- 2023年宿松县医院高校医学专业毕业生招聘考试历年高频考点试题含答案解析
评论
0/150
提交评论