94.二叉树的中序遍历 python

二叉树的中序遍历(python) 题目要求:给定一个二叉树的根节点root,返回它的遍历。[1,3,2]root = [][]root = [1][1]这是一道关于二叉树中序遍历的问题。中序遍历是指按照左子树-根节点-右子树的顺序遍历二叉树。可以用递归和迭代两种解法来解。 阅读详情

题目

题目描述

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

示例 1:

在这里插入图片描述

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

示例 2:

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

示例 3:

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

提示:

树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100

题解

中序遍历(Inorder Traversal)是二叉树的一种遍历方式,其遍历顺序为:先访问左子树,然后访问根节点,最后访问右子树。对于每个子树来说,也是遵循相同的访问顺序。这种遍历方法特别适用于二叉搜索树(BST),因为在BST中进行中序遍历会按照升序访问节点。

解题思路

为了实现中序遍历,我们可以使用递归或迭代的方法:

  1. 递归法:这是最直观的方法。我们定义一个辅助函数来进行递归调用,在这个过程中,首先递归访问左子树,然后访问当前节点,最后递归访问右子树。
  2. 迭代法:通过显式地使用栈来模拟递归调用的过程。开始时将所有左侧节点压入栈中,直到遇到没有左孩子的节点为止;然后弹出栈顶元素并访问它,接着转向它的右子树,并重复上述过程。

下面分别给出这两种方法的 Python 实现代码:

递归法

def inorderTraversal(root: TreeNode) -> list:
    result = []
    
    def traverse(node):
        if not node:
            return
        # 先遍历左子树
        traverse(node.left)
        # 访问根节点
        result.append(node.val)
        # 最后遍历右子树
        traverse(node.right)
    
    traverse(root)
    return result

提交结果

在这里插入图片描述

迭代法

def inorderTraversal(root: TreeNode) -> list:
    stack, result = [], []
    current = root
    
    while current or stack:
        # 遍历到最左边的节点,并将其沿途的所有节点压入栈中
        while current:
            stack.append(current)
            current = current.left
        
        # 弹出栈顶元素并访问它
        current = stack.pop()
        result.append(current.val)
        
        # 转向右子树
        current = current.right
    
    return result

提交结果

在这里插入图片描述

LeetCode - 94 - 二叉树的中序遍历 (Python) 标题 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,3,2] 递归 首先,递归的方法很简单,将访问函数写为向列表中添加元素即可。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val... 阅读详情

相关推荐

LeetCode.94 二叉树的中序遍历(python解法)

目录题目solution_1参考资料 题目 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] solution_1 思路:“颜色标记法”,兼具栈迭代方法的高效,又像递归方法一样简洁易懂,更重要的是,这种方法对于前序、中序、后序遍历,能够写出完全一致的代码。 其核心思想如下: 使用颜...

weixin_41638083的博客 547

LeetCode(Python)—— 二叉树的中序遍历(简单)

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

m0_61661179的博客 6万+

CS5212芯片实战:手把手教你设计DP转VGA转换电路(附完整原理图)

本文详细介绍了CS5212芯片在DP转VGA转换电路设计中的实战应用,包括芯片架构解析、核心电路设计要点、PCB布局与电磁兼容设计、调试技巧及进阶应用开发。通过完整的原理图和实用设计指南,帮助工程师快速掌握高可靠转换器的设计方法,特别适合需要国产化替代方案的场景。

weixin_30576827的博客 393

数据结构之树:中序遍历二叉树(C & Python)

C和Python实现中序遍历二叉树非递归算法

guanchazhe55的博客 2322

解决AutoDock与Python版本冲突导致的内存泄漏问题:从BHtree *错误到环境配置优化

本文深入解析了AutoDock分子对接中常见的‘BHtree *’内存泄漏错误,其根源在于SWIG接口模块与Python运行环境的版本不匹配。文章提供了根治方案:通过构建Python 2.5.4与MGLTools 1.5.6的黄金兼容组合,并详细指导环境清理、安装配置及实战测试,从而彻底解决该内存泄漏问题,确保AutoDock工作流的稳定运行。

g5h6i的博客 1115

【WorkBuddy专栏】完结篇暨付费专栏总目录(内容继续更新中)

【WorkBuddy专栏】完结篇和付费内容总目录

AI人人懂 913

算法数据结构基础——二叉树的遍历(前序、中序、后序、层序)及python实现

二叉树的遍历:指的是从根节点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点被访问一次且仅被访问一次。在二叉树的一些实际问题中,经常需要按照一定顺序对二叉树中每个节点逐个进行访问一次,用以查找具有某一特点的节点或者全部节点,然后对这些满足要求的节点进行处理。这里所说的「访问」就是指对该节点进行某种操作,例如:依次输出节点的数据信息、统计满足某条件的节点总数等等。回顾二叉树的递归定义可以知道,二叉树是由根节点和左子树、右子树构成的。因此,如果能依次遍历这3个部分,就可以遍历整个二叉树。

白话机器学习 7920

基于YOLOv11的农作物病虫害检测系统设计与实现

我们使用公开的IP102病虫害数据集作为基础,该数据集包含102种病虫害类别,覆盖水稻、小麦、玉米等多种主要农作物。图像数量:75,222张类别数:102图像分辨率:从640×480到4000×3000不等标注格式:PASCAL VOC格式此外,我们还收集了部分田间实际拍摄的图像以增强模型泛化能力。

YOLO 595

python实现二叉树遍历(前、中、后序)

        树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。         从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: ⑴访问结点本身(N) ⑵遍历该结点的左子树(L) ⑶遍历该结点的右子树(R) 前序遍历(先序遍历): NLR:先访问根节点–> 访问左

weixin_43786241的博客 5193

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6667

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 191

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

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 二叉树的中序遍历顺序为:左- 根 - 右,最常用的是使用递归来进行求解,递归过程是:遍历左子树 - 打印当前结点 - 遍历右子树 ,递归终止条件是root == None。 c...

Forlogenの解忧杂货铺 684

Windows 11 安装 MySQL 8.4:安装包方式、下载、安装、使用

本文详细介绍了在 Windows 11 系统下通过 MSI 安装包方式安装 MySQL 8.4 LTS 社区版的完整流程,包括版本选择、下载、自定义安装路径、服务配置、日志设置、示例数据库创建及后续使用方法。同时提供了命令行客户端与图形化工具 DBeaver 的连接与操作演示,适合初学者和开发者快速搭建本地 MySQL 开发环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2263

LeetCode 94. 二叉树的中序遍历 | Python

使用递归、迭代(栈),解决 LeetCode 《94. 二叉树的中序遍历》 问题

"大梦三千秋的博客 522

极验点选click3.1.0所对应fullpage.js的逆向分析

极验3代点选验证,本文适用于使用click.3.1.0.js和fullpage919-eyz9lh.js版本的web验证码,没有细节内容,适合有基础的开发者阅读。

shanf7921的博客 650

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode 94.二叉树的中序遍历(python)

leetcode 94.二叉树的中序遍历(python) 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 方法1: 递归 # # @lc app=leetcode.cn id=94 lang=python # # [94] 二叉树的中序遍历 # # @lc code=start # Definition for a binary tree

pureszgd的博客 477

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode 94. 二叉树的中序遍历|Python 解法详解

这道题的关键是:递归函数负责遍历一棵子树:空节点直接返回,依次递归左子树、记录根值、递归右子树。理解这一点后,再结合边界条件检查,代码就能保持清晰且稳定。

a1250467048的博客 278

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Leetcode 94 python 二叉树的中序遍历

题意: 给定一个二叉树,返回它的中序遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则: (1)中序遍历左子树 (2)访问根结点 (3)中序遍历右子树 如右图所示二叉树,中序遍历结果:DBEAFC ![中序遍历结果:DBE...

小力子的博客 1056

【Leetcode】Python实现—94.二叉树的中序遍历

目录一、题目描述题目中序遍历介绍二、递归实现递归遍历过程实现代码三、迭代实现 一、题目描述 题目 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 示例1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例2: 输入:root = [] 输出:[] 示例3: 输入:root = [1,null,2] 输出:[1,2] 中序遍历介绍 二、递归实现 递归遍历过程 1. 前序遍历其左子树; 2. 访问根节点; 3. 前序遍历其右子树; 然后就是一直递归下去,在访问到.

weixin_38615776的博客 478

94. 二叉树的中序遍历(Python、Java)

1 题目 链接:二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1  \   2  / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 2 Python 2.1 方法一:递归 # Definition for a binary tree node. # class TreeNode: # def __init...

weixin_43969686的博客 193

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

给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 思路: 递归就完事了,先处理左子树,再处理root,再处理右子树。 # Definition for a binary tree node. # class TreeNode(object): # def __in...

Keep Coding 2185

【LeetCode 94】二叉树的中序遍历(Python)

一、题目 给定一个二叉树,返回它的中序遍历。 示例: 输入: [1,null,2,3] 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 二、代码 1.递归。很简单,不多做说明了。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.rig

Lucy_R的博客 432

Leetcode 94. 二叉树的中序遍历 Python3实现

Leetcode 94. 二叉树的中序遍历 Python3实现 基于栈实现二叉树的中序遍历,加了详细的注释,方便日后复习,也希望能帮到其他小伙伴,如有错误,欢迎指正! 基于栈的迭代法: class Solution: def inorderTraversal(self, root: TreeNode) -> List[int]: # 定义一个栈,用来存已遍历,但是还未到弹出时机的节点 stack = [] # res用来中序遍历的结果

Println30的博客 256

Leetcode_总结】94. 二叉树的中序遍历 - python

Q: 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/description/ 思路:递归 中序遍历 代码: # Definition...

maka_uir的博客 601

树-94. 二叉树的中序遍历-PYTHON

迭代 # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): ...

宋建国的博客 428

二叉树 中序遍历 python_LeetCode94 二叉树的中序遍历

解题思路递归递归思路很简单,首先递归左子树,然后将根结点的值添加到结果集中,最后递归右子树递归终止条件:节点为空代码如下ArrayList res = new ArrayList<>();public List inorderTraversal(TreeNode root) { dfs(root); return res;}public void dfs(Tree...

weixin_39530839的博客 122
上一篇: 93.复原IP地址 python
下一篇: 95.不同的二叉搜索树Ⅱ python
gxls2024
博客等级 码龄9年 1079粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gxls2024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值