力扣 94.二叉树的中序遍历(简单)

【简单】力扣算法题解析LeetCode94:二叉树的中序遍历 本文介绍了二叉树中序遍历的迭代实现方法。通过使用栈模拟递归过程,算法首先将所有左子节点入栈,然后处理栈顶节点并转向右子树,确保按左-根-右顺序访问节点。Java代码中采用ArrayDeque作为栈结构,时间复杂度O(n),空间复杂度O(h)。该方法避免了递归的潜在栈溢出风险,适合处理深层树结构。文章包含示例说明、核心思路图解和完整可运行的Java代码实现,帮助读者直观理解迭代遍历过程。 阅读详情

  (力扣上给出的难度是简单,但有半年没接触过类似的题了,感觉还是很陌生)

题目:
给定一个二叉树的根节点 root ,返回它的 中序 遍历。
示例1
在这里插入图片描述

输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:
在这里插入图片描述

输入:root = [1,2]
输出:[2,1]

示例 5:
在这里插入图片描述

输入:root = [1,null,2]
输出:[1,2]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?

题解如下:(看了官方的题解做的)
首先:什么是中序遍历?

什么是二叉树的中序遍历:按照访问左子树——根节点——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候我们按照同样的方式遍历,直到遍历完整棵树。

递归方法
在这里插入图片描述

class Solution {
public:
    void mid(TreeNode* root,vector<int>& res)//递归
    {
        if(root==NULL)//递归函数的出口
        {return;}
        mid(root->left,res);//递归节点左字数
        res.push_back(root->val);//把当前节点的值放到结果数组中
        mid(root->right,res);//递归节点右子树
    }
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;//先定义一个储存答案的
        mid(root,res);
        return res;
    }
};

C++中push_back函数使用方法:网站
迭代方法

二叉树的中序遍历因为要一直访问到左子树的最左边,所以需要一个指针变量帮助找到二叉树的最左边的节点。

在这里插入图片描述
迭代方法内存消耗少

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> res;//像递归一样,先定义一个储存结果的数组
        stack<TreeNode* > stk;//定义一个栈
        TreeNode *s = root;
        while(s != nullptr || !stk.empty())
        {
            while(s!=nullptr)//非空
            {
                stk.push(s);//将数值放到栈中去
                s = s->left;
            }
            //此时s为空,说明s上一个节点无左子树
            s = stk.top();
            stk.pop();
            res.push_back(s->val);//将放入栈的值取入答案数组
            s = s->right;//再进入右子树

        }
        return res;
    }
};

栈stack的常见用法:网站

快乐进步每一天~

PS/Ai/PR/AE等adobe出现正版弹窗提示:Your non-genuine Adobe app will be disabled soon解决办法 就是用专门的清理工具下载,清理工具在文章下方。然后新建三个空的记事本文件,重命名为 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。在该文件目录中,分别找到 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe,然后在防火墙入站规则里,阻止Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。 阅读详情

相关推荐

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 395

leetcode 94——二叉树的中序遍历

leetcode 94——二叉树的中序遍历(C++) 题目描述: 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversa...

weixin_44795839的博客 239

处理SAP资产折旧AFAB 过账报错:“科目 8019010100 要求一个成本会计分配”

本文介绍如何处理资产折旧报错 ““科目XXXXXXX 要求一个成本会计分配””

IT小职员 2775

力扣第94题

二叉树中序遍历

qq_39939541的博客 3682

《Mac 配置 Codex App 代理完整指南:端口检测 + launchctl 设置 + 取消代理》

本文详细介绍 Mac 上 Codex App 代理配置完整流程,包括如何查看代理端口、如何使用 launchctl 设置 HTTP_PROXY / HTTPS_PROXY、如何验证代理是否生效以及如何取消代理配置。适用于 Mac Codex 代理、Mac HTTP_PROXY 设置、Mac ChatGPT 代理等开发环境场景。

weixin_50029578的博客 5335

常见的电容有哪些

电容在电路板中非常常见,类别纷繁复杂,本文化繁为简,主要介绍下常见电容。

qq_40170041的博客 768

力扣第94题——二叉树的中序遍历(C语言题解)

力扣第94题——二叉树的中序遍历(C语言题解)

m0_74102727的博客 316

Lammps实现Ar的沸腾过程(包含in文件)

Lammps实现简单的沸腾过程

Rockyoung 3503

【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树

【LeetCode题目详解】144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树

青色_忘川的博客 814

一次搞懂 OData Deep Create:在 ABAP Client Proxy 中优雅完成父子实体的一键插入

摘要: 本文面向熟悉SAP Gateway与OData的ABAP工程师,详解Deep Create的核心概念与实现。Deep Create允许在一次请求中原子化创建主实体及其关联子实体(如Team与Manager),解决多次HTTP请求导致的脏写问题。对比OData v2/v4协议差异后,重点阐述ABAP Client Proxy中通过Data Description Node构造层级数据描述树的方法,包括根/子节点定义、属性对齐及业务数据绑定。提供可复用的ABAP代码骨架,并区分Deep Create与$

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 185

3. NVIDIA GPU Xid 常见错误码全解析、故障定位与标准化处理方案

摘要: Xid是NVIDIA显卡驱动记录的硬件/软件异常日志,通过dmesg等工具可获取,包含PCI总线、GPU编号、故障码等信息,是诊断显卡问题的核心依据。Xid故障分为四类:应用程序类(如代码错误,Xid13/31)、显存ECC硬件类(如显存损坏,Xid48/63)、链路/供电温控类(如PCIe故障,Xid74/79)和GSP固件类(如静电干扰,Xid119/154)。排查流程包括日志采集、软件修复(如重启进程、升级驱动)、硬件检查(如PCIe链路状态)及断电复位(针对GSP故障)。预防措施包括监控EC

jundao1997的专栏 662

94. 二叉树的中序遍历

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal 著作权归领扣网...

qq_45564691的博客 367

R语言Rstudio突然无法启动且报错:ERROR system error 42 [str: 一, len: 3, from: UTF-8, to: ISO8859-1]...如何解决

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2846

【力扣 简单 C】94. 二叉树的中序遍历

【代码】【力扣 简单 C】94. 二叉树的中序遍历。

2503_92320911的博客 486

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode刷题94-简单-二叉树的中序遍历

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

布小禅的博客 9075

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【二叉树】Leetcode 94. 二叉树的中序遍历【简单】

中序遍历是一种二叉树遍历方式,按照“左根右”的顺序遍历二叉树节点。给定一个二叉树的根节点 root ,返回 它的 中序 遍历。输入:root = [1,null,2,3]输出:[1,3,2]

FLGB 675

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Leetcode—94. 二叉树的中序遍历【简单】

本文介绍了使用Go语言实现二叉树中序遍历的递归解法。代码定义了一个dfs函数进行递归遍历,按照左子树-根节点-右子树的顺序访问节点值,并将结果存入切片。该方法简洁高效地完成了中序遍历任务,运行结果验证了其正确性。文章还包含二叉树节点定义和结果展示图片,为读者提供了完整的参考实现。

Atticus的博客 225

【leetcode】94. 二叉树的中序遍历(简单)

94. 二叉树的中序遍历 题目描述 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 提示: 树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100 递归 前序遍历:打印 - 左 - 右 中序遍历:左 - 打印 - 右 后序遍历:左 - 右 - 打印

Friedrichor的博客 648

[Java·算法·简单]LeetCode94. 二叉树的中序遍历

👉️。

九尾狐的yi巴的博客 188

【LeetCode - Java】94. 二叉树的中序遍历 (简单)

目录1. 题目描述2. 解题思路3. 代码实现3.1 递归3.2 迭代3.3 改进Morris算法3.4 对比 1. 题目描述 2. 解题思路 二叉树无论是前序、中序还是后序遍历,利用递归都是可以很简单地实现并且通俗易懂的。在本道题目中使用迭代算法实现才是有挑战性的任务。递归是使用了栈,那么毫无疑问使用迭代算法时需要人为地构造栈结构,那么难点在于什么部分呢?其难点正是在于出栈入栈的规则设定,实不相瞒,昨晚想了一个多小时愣是卡住了没想出来,今早吃完个早餐突然就有了想法了,这可能就是心理学当中的酝酿效应吧。

Beemo的博客 618

LeetCode_二叉树_简单_94.二叉树的中序遍历

目录1.题目2.思路3.代码实现(Java) 1.题目 给定一个二叉树的根节点 root ,返回它的中序遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 输入:root = [1,2] 输出:[2,1] 示例 5: 输入:root = [1,null,2] 输出:[1,2] 提示: 树中节点数目在范围 [0, 100] 内 -100 <= No

代码星辰的博客 585

【Leetcode简单顺序day7】94. 二叉树的中序遍历

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

qq_41592994的博客 243

Leetcode—94.二叉树的中序遍历【简单】(stack)

运行结果 运行结果 运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

Atticus的博客 286

LeetCode题解--94.二叉树的中序遍历(简单)

/ 初始化结果数组长度为0,避免随机值导致索引错误// 分配结果数组:int类型,长度100(题目限制节点数≤100),堆内存存储// 当前遍历的节点指针,初始指向根节点// 用于找「当前节点的中序前驱节点」(左子树最右节点)中序前驱节点对当前节点curr来说,其中序遍历的前驱节点是「左子树的最右侧节点」—— 中序遍历中,这个节点是curr的前一个被访问节点,Morris 遍历通过把前驱节点的right指针指向curr,建立 “线索”,避免用栈记录回溯路径。

HGLGH的博客 400

【LeetCode-简单题】94. 二叉树的中序遍历

思路:创建一个list集合用来将遍历的节点存到集合当中,按照中序遍历的特点,先遍历左子树,直到遍历到节点为null,再依次将节点存入到list集合,左子树遍历完,将root节点加入集合,再遍历右子树所有节点。思路:先设置一个总循环确保所有的节点都入栈,再设置一个循环确保每次都能把左节点先入栈。随后把这个左节点出栈来表示这个节点已经中序排序结束,一级一级出栈,然后才轮到右侧节点。

weixin_45618869的博客 156

java leetcode之[数据结构 简单]94. 二叉树的中序遍历

题目的链接在这里:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/ 目录题目大意一、示意图二、解题思路递归非递归 题目大意 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 一、示意图 二、解题思路 递归和非递归 递归 代码如下: /** * Definition for a binary tree node. * public class TreeNode { * int val; *

wzw的博客 127
上一篇: 栈:stack 的常见用法☆☆☆☆
下一篇: 力扣453. 最小操作次数使数组元素相等(简单)
King_Arthur#
博客等级 码龄6年 77粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值