LeetCode-94-二叉树的中序遍历

ops/2025/2/14 0:59:56/

题目:

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

解法一: 递归写法

思路: 先处理左子树 inOrder(root.left),在打印root的值,之后处理右子树。

public static void inOrder(TreeNode root){if (root == null){return;}inOrder(root.left);System.out.print(root.val + " ");inOrder(root.right);}

解法二: 用栈改造中序递归

注意:二叉树的先,中,后序遍历都可以用栈来改造成非递归写法。
用栈改造中序递归的基本思路就是,一路向下查找节点的左孩子,如果有左孩子,入栈,这样的话,可以保证最后一个左孩子先出栈,如果某一节点左孩子为空,pop出上一个左孩子并处理,之后对右孩子也执行相同的操作。

public List<Integer> inorderTraversal(TreeNode root) {if(root == null){return new ArrayList<Integer>();}List<Integer> res = new ArrayList<>();Stack<TreeNode> stack = new Stack<>();while(!stack.isEmpty() || root != null){if(root != null){stack.push(root);root = root.left;}else{root = stack.pop();res.add(root.val);root = root.right;}}return res;}

如果想看二叉树的全部递归与非递归代码,请点击:二叉树的递归与非递归遍历方式


http://www.ppmy.cn/ops/8984.html

相关文章

君正主控应用案例:办公必备神器,长城黑白激光一体机

伴随着这些年素质教育水平的提高&#xff0c;学校老师们成功减负&#xff0c;家长身上的担子越来越重&#xff0c;同时移动互联网的发展&#xff0c;学校和家长的沟通方式也在发生着变化&#xff0c;现在很多老师喜欢给学生布置作业是电子版的形式&#xff0c;如果是试卷一类还…

Linux常用操作命令

1、查询指定目录文件名模糊匹配 #find /home -name "*jelly*" 备注&#xff1a;寻找home目录下面所有文件/文件夹名字有jelly的文件 2、查询指定目录下面所有文件中含有指定字符串的文件&#xff0c;显示行号 #grep -rn "jelly" 备注&#xff1a;查询…

HBase2.x学习笔记

文章目录 一、HBase 简介1、HBase 定义1.1 概述1.2 HBase 与 Hadoop 的关系1.3 RDBMS 与 HBase 的对比1.4 HBase 特征简要 2、HBase 数据模型2.1 HBase 逻辑结构2.2 HBase 物理存储结构2.3 HBase的表数据模型 3、HBase 基本架构3.1 Master3.2 Region Server3.3 Zookeeper3.4 HD…

Next App Router(上)

目录 1. 文件系统&#xff08;file-system&#xff09; 2. 从 Pages Router 到 App Router 3. 使用 App Router 4. 定义页面&#xff08;Pages&#xff09; 路由&#xff08;Router&#xff09;是 Next.js 应用的重要组成部分。在 Next.js 中&#xff0c;路由决定了一个页面…

C# 工具类

文章目录 Dns获取本机IP地址获取当前项目App.config文件下的value值将枚举值赋值到下拉文本框中读取Json文件JSON转换使用文件流的方式&#xff0c;向文档中添加数据将数据写入指定路径文件中检查文件是否存在&#xff0c;不存在时进行创建Json转换为对象 Dns获取本机IP地址 p…

C语言 语法

常用的排序算法&#xff08;4&#xff09;&#xff1a; 插入排序&#xff08;小数据基本有序&#xff09;&#xff0c;快速排序&#xff0c;归并排序&#xff08;大数据集&#xff09;&#xff0c;堆排序 冒泡排序和选择排序实际场景不会使用性能差 如何评估排序算法的性能&…

35. UE5 RPG制作火球术技能

接下来&#xff0c;我们将制作技能了&#xff0c;总算迈进了一大步。首先回顾一下之前是如何实现技能触发的&#xff0c;然后再进入正题。 如果想实现我之前的触发方式的&#xff0c;请看此栏目的31-33篇文章&#xff0c;讲解了实现逻辑&#xff0c;这里总结一下&#xff1a; …

node.js-模块化

定义&#xff1a;CommonJS模块是为Node.js打包Javascript代码的原始方式。Node.js还支持浏览器和其他Javascript运行时使用的ECMAScript模块标准。 在Node.js中&#xff0c;每个文件都被视为一个单独的模块。 概念&#xff1a;项目是由很多个模块文件组成的 好处&#xff1a…