当前位置: 首页 > news >正文

中序遍历迭代算法(非递归算法)

中序遍历迭代算法(非递归算法)

关键:在二叉树的中序遍历中,访问结点的操作发生在左子树遍历完毕,准备遍历右子树时。所以在遇到某结点时并不能立即访问它,而是将它压入到栈中,等到左子树遍历完之后,再重栈中弹出并访问。

算法思想:遍历左子树,依次进栈(此时不访问),遍历完左子树之后弹出栈顶结点,访问栈顶结点,遍历右子树,依次循环操作直到栈为空和指针为空。

代码:

whille(p!=NULL||S.isEmpty){  //当p为空并且,S为空时跳出循环

if(p!=NULL){

        push(S,p);  //入栈

        p=p->lchild;  //遍历左子树

}

if(!S.isEmpty){

        pop(S.p);  //弹出栈顶元素

        visit(p);  //访问弹出结点

        p=p->rchild;  //遍历右子树

}

}

注意:这里pop(S.p) 与p=s.pop()一样

相关文章:

  • 汇编语言与微机原理 期末半开卷复习整理(上)
  • Linux-性能分析常用工具
  • 某验三代滑块流程分析
  • JMeter入门教程(14)——场景设计
  • C#学习记录——在C#中操作注册表
  • 【cocos源码学习】模板示例工程的目录说明
  • UE5 中 LiveLink 的开发全流程教程
  • 力扣(LeetCode)134. 加油站(C++)
  • 学习 MySQL:什么是分页
  • DPD(Digital Pre-Distortion,数字预失真)
  • JAVA毕业设计课程与成绩管理计算机源码+lw文档+系统+调试部署+数据库
  • 分面中添加直线
  • [LeetCode 1774]最接近目标价格的甜点成本
  • 计算卫星高度角、方位角
  • Maven
  • HCIA笔记(2)
  • 【Java难点攻克】「海量数据计算系列」如何使用BitMap在海量数据中对相应的进行去重、查找和排序实战
  • InterlockedCompareExchangePointer 的作用和例子
  • PHP代码审计系列(一)
  • Seata概述基础
  • 2/4考试总结
  • Ta-Lib源码解析(三):蜡烛图指标 (Candlestick Indicator) #(附Python重构代码和示意图)(补充中)
  • 【嵌入式】MDK使用sct文件将代码段放入RAM中执行
  • 《基于Xilinx的时序分析、约束和收敛》目录与传送门
  • Jackson序列化带有注解的字段的原理浅析
  • 第十届“图灵杯”NEUQ-ACM程序设计竞赛题解(A-I)
  • Linux ALSA 之九:ALSA ASOC Codec Driver
  • 一文读懂JVM类加载机制过程及原理
  • 一文带你入门MyBatis Plus
  • java split()方法 toLowerCase() 方法
  • 教师节怎么送礼物老师会收
  • 2023广州商学院适合女生的专业有哪些 什么专业好就业
  • 2023甘肃高考体育类一批几号报志愿 怎么填报
  • 2021化学生物地理报考专业
  • 2023年贵州高考197分能报什么大学 197分能上哪些院校
  • 经济贸易是干什么的 前景怎么样
  • 2023年辽宁高考385分能报什么大学 385分能上哪些院校
  • 2023年甘肃高考665分能报什么大学 665分能上哪些院校
  • 2021延安大学西安创新学院招生有哪些专业 什么专业就业好
  • 中秋最佳赏月时间出炉! 日落后一小时最佳