题目
题目:非递归中根遍历二叉树,树结构如下:
遍历结果:20 30 40 50 80 100 120
猜想
非递归先根遍历使用栈是可以的,中根也可以吧?
简化
1.这棵树太复杂了,简单一点更容易理解.于是
打印结果:30 50 100。
打印这样的结果,需要50进栈,30进栈,30出栈,50出栈,100进栈再出栈
落实一下代码逻辑
根节点50进栈,左孩子30进栈,左子树30没有左孩子,30弹栈
栈不为空,50弹栈
可是100如何进栈呢?应该是50弹栈的时候,检查是否右孩子,如果有右孩子,将右孩子压栈
弹栈时,检查是否存在右孩子,如果有右孩子,将右孩子压栈。我们可以试试给30增加一个右孩子,比如下图:
我们再试试30弹栈的同时,将40压栈是否合适?
这个方法,可以耶,上代码,Python版本
class Solution(object): """ 50 / \ 30 100 / \ / \ 20 40 80 120 """ def midOrderNoRecursion(self, root): if not root: return stack = list() cur_node = root while stack or cur_node: if cur_node: stack.append(cur_node) if cur_node and cur_node.left: cur_node = cur_node.left else: node = stack.pop() print(node.val) if node.right: cur_node = node.right else: cur_node = None
Java版本
public void midOrderNoRecursion(TreeNode root) { if (root == null) { return; } Stack<TreeNode> stack = new Stack<>(); TreeNode curNode = root; while (!stack.isEmpty() || curNode != null) { if (curNode != null) { stack.add(curNode); } if (curNode != null && curNode.left != null) { curNode = curNode.left; } else { TreeNode node = stack.pop(); System.out.println(node.val); if (node.right != null) { curNode = node.right; } else { curNode = null; } } } }
关注源代码清单,技术人的学习清单
相关推荐
在"西门子SCL编程语言指导手册S7-SCL - Working with S7-SCL"中,你将学习到以下关键知识点: 1. **SCL基本概念**:了解SCL的编程环境,包括源代码编辑器、编译器和调试工具的使用。 2. **数据类型与变量声明**:...
1. **SCL基础知识**:介绍SCL的语法结构、基本元素和编程规则,包括变量声明、赋值操作、条件语句(IF...THEN...ELSE)、循环语句(WHILE, FOR)、函数调用等。 2. **数据类型和变量管理**:详述各种内置数据类型和...
官方离线安装包,亲测可用
压缩包含centos-release-scl-rh-2-3.el7.centos.noarch.rpm和centos-release-scl-2-3.el7.centos.noarch.rpm,主要用于centos7的gcc安装
离线安装包,亲测可用
1. **安装**:手册介绍了如何安装S7-SCL软件,确保用户能够顺利地在MS Windows 2000 Professional或XP Professional操作系统上设置编程环境。 2. **设计S7-SCL计划**:这部分详细讲解了如何创建S7-SCL程序,包括...
例如,你可以定义一个包含多个元素的数组,如 ARRAY[1..10] OF REAL: myArray; 这创建了一个包含10个浮点数的数组。 在SCL中,函数块(FB)和组织块(OB)是程序的主要结构。OB用于定义周期性或事件驱动的程序段,...
离线安装包,亲测可用
SIMATIC_S7-SCL_V5.6安装包-链接地址
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
scl3300-d01,datasheet,数据描述表,高性能3轴倾角传感器 在倾斜测定方面具有超高性能 尺寸: 7.6×8.6×3.3mm (宽×长×高) 针对用途以及要求值可从4种模式中选择测定模式 超低噪声、高分辨率 0.001°/√Hz SPI...
官方离线安装包,亲测可用
scl-utils-20120927-11.el6.centos.alt.x86_64.rpm
官方离线安装包,亲测可用
离线安装包,亲测可用
本“SCL-90测评软件”具有下载快速、使用简便的特点,旨在让专业人士和普通用户都能轻松进行自我评估或对他人的心理状况进行初步筛查。软件包含的主要文件有: 1. SCL90.CAB:这是一个 Cabinet 文件,通常用于存储...
在本例中,我们关注的是一个特定的rpm包,名为centos-release-scl-2-3.el7.centos.x64-86.rpm.tar.gz。这个包名暗示了它可能与CentOS的软件集合(SCL)有关,SCL是一种用于在同一台机器上安装和使用多个版本软件的...
S7-SCL 提供了高级语言结构,因此它适合用于计算和数据管理算法。
1. **S7SCL简介**: S7SCL是一种结构化编程语言,它提供了一种更接近传统高级编程语言(如C或PASCAL)的方式来编写PLC程序。相比其他PLC编程语言,如Ladder Diagram(LD)或Function Block Diagram(FBD),SCL更...