题目
题目:非递归中根遍历二叉树,树结构如下:
遍历结果: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安装包-链接地址
官方离线安装包,亲测可用
官方离线安装包,亲测可用
scl3300-d01,datasheet,数据描述表,高性能3轴倾角传感器 在倾斜测定方面具有超高性能 尺寸: 7.6×8.6×3.3mm (宽×长×高) 针对用途以及要求值可从4种模式中选择测定模式 超低噪声、高分辨率 0.001°/√Hz SPI...
离线安装包,亲测可用
本“SCL-90测评软件”具有下载快速、使用简便的特点,旨在让专业人士和普通用户都能轻松进行自我评估或对他人的心理状况进行初步筛查。软件包含的主要文件有: 1. SCL90.CAB:这是一个 Cabinet 文件,通常用于存储...
S7-SCL 提供了高级语言结构,因此它适合用于计算和数据管理算法。
标题"S7-SCL V5.6.rar"表明这是一个关于西门子S7-SCL编程语言的软件资源,版本为V5.6,并且是适用于Windows 10专业版的中文版。描述中提到的"step7v5.6 sp1 chinese"确认了这与西门子的Step 7编程软件有关,版本号为...
《S7_SCL编程手册》是西门子发布的一份详细且系统的中文版编程指南,旨在帮助用户理解和掌握SCL编程语言在西门子自动化设备中的应用。SCL,全称Structured Control Language,是一种基于IEC 61131-3标准的高级编程...
SIMATIC S7-SCL V5.1是一款适用于S7-300/S7-400系列PLC的高级编程软件,它支持在STEP 7环境中使用结构化控制语言(Structured Control Language,SCL)进行程序设计。SCL是一种高级编程语言,类似于Pascal或C语言,...
症状自评量表SCL90是心理学领域中的一种常用评估工具,旨在评估个体的心理症状及其严重程度。该评估工具共有90个项目,涵盖了情感、思维、行为、生活习惯、人际关系、饮食、睡眠等多方面。 SCL90的测验目的在于从多...