news 2026/4/16 18:18:01

【LeetCode刷题】二叉树的中序遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【LeetCode刷题】二叉树的中序遍历

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

递归解法

利用递归的 “左→根→右” 顺序遍历,是中序遍历的直观实现。

Python代码

from typing import Optional, List class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: result = [] # 递归辅助函数:实现中序遍历「左→根→右」的核心逻辑 def traverse(node: Optional[TreeNode]): if node: # 节点非空时才遍历,递归终止条件:node is None traverse(node.left) # 第一步:遍历左子树 result.append(node.val) # 第二步:访问当前根节点 traverse(node.right) # 第三步:遍历右子树 traverse(root) # 从根节点开始递归遍历 return result if __name__ == "__main__": # 实例化解题类 sol = Solution() # 示例1:构建树 [1,null,2,3] → 输出 [1,3,2] root1 = TreeNode(1) root1.right = TreeNode(2) root1.right.left = TreeNode(3) print("示例1输出:", sol.inorderTraversal(root1)) print("预期结果:", [1, 3, 2]) print("-" * 30) # 示例2:构建空树 [] → 输出 [] root2 = None print("示例2输出:", sol.inorderTraversal(root2)) print("预期结果:", []) print("-" * 30) # 示例3:构建树 [1] → 输出 [1] root3 = TreeNode(1) print("示例3输出:", sol.inorderTraversal(root3)) print("预期结果:", [1])

LeetCode提交代码

# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: result = [] # 递归辅助函数:实现“左→根→右”的遍历逻辑 def traverse(node: Optional[TreeNode]): if node: traverse(node.left) # 先遍历左子树 result.append(node.val) # 再访问当前根节点 traverse(node.right) # 最后遍历右子树 traverse(root) return result

程序运行截图展示

总结

本文介绍了二叉树中序遍历的递归实现方法。中序遍历按照"左子树→根节点→右子树"的顺序访问节点。通过Python代码演示了递归解法,定义了一个辅助函数traverse来实现这一逻辑:先递归遍历左子树,然后访问当前节点值,最后递归遍历右子树。提供了三个测试用例验证正确性:包含单节点树、空树和典型二叉树的情况。时间复杂度为O(n),空间复杂度为O(n)(递归栈空间)。该方法直观体现了中序遍历的定义,是解决此类问题的经典递归范式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:29:23

旅游小程序设计毕业论文+PPT(附源代码+演示视频)

文章目录 一、项目简介1.1 运行视频1.2 &#x1f680; 项目技术栈1.3 ✅ 环境要求说明1.4 包含的文件列表 前台运行截图后台运行截图项目部署源码下载 一、项目简介 项目基于微信小程序&#xff0c;使用微信原生开发框架或uni-app框架开发。旅游小程序设计 随着移动互联网的普…

作者头像 李华
网站建设 2026/4/16 12:46:48

子网划分原理、等长子网划分方法、等长子网划分实验

如何配置网关呢&#xff1f;一个路由器两个接口都不能配置同一个网段的地址&#xff0c;三层交换一样&#xff0c;两个vlanif不能配置成相同网段的地址&#xff0c;更不能配置成相同的地址现在这个实验&#xff0c;两个vlan&#xff0c;配置的是相同网段的地址。都是/24位的地址…

作者头像 李华
网站建设 2026/4/16 11:55:00

【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享

【26美赛D题】2026美赛数学建模赛&#xff08;MCM/ICM&#xff09;思路解析及代码分享 订阅即可获取2026年及历年数学建模笔记&#xff0c;万字题解内容&#xff0c;且结合全球最新AI技术辅助&#xff0c;帮你轻松攻坚竞赛&#xff01;后续还将持续发布华为杯、高教社杯、华数杯…

作者头像 李华
网站建设 2026/4/15 20:35:00

④YT代码去除冗余

一、移除冗余代码 首先将STM32CubeMX中的工程名称修改为"YT"&#xff0c;然后在Project Manager的Project选项卡中完成相应配置&#xff08;具体勾选项如下所示&#xff09;&#xff0c;最后重新生成项目以创建新的YT.uvprojx工程文件。需特别注意&#xff1a;MDK-AR…

作者头像 李华
网站建设 2026/4/16 13:43:04

社会网络仿真软件:NetLogo_(16).NetLogo与其他软件的集成

NetLogo与其他软件的集成 在社会网络仿真中&#xff0c;NetLogo 是一个非常强大的工具&#xff0c;但它也有其局限性。为了扩展 NetLogo 的功能&#xff0c;提高仿真的复杂度和精度&#xff0c;可以将 NetLogo 与其他软件进行集成。本节将详细介绍如何将 NetLogo 与常见的软件…

作者头像 李华
网站建设 2026/4/16 13:44:00

智能体之拆解 Clawdbot:从架构设计到提示词哲学的全链路硬核解析

前言:当 Chatbot 长出了“爪子” 在很长一段时间里,我们与 LLM 的交互仅限于“对话”。不管 GPT 聊得多么开心,它始终被困在对话框里,无法触碰真实世界的代码库或服务器。 Clawdbot 的诞生就是为了打破这堵墙。名字中的 "Claw" 一语双关:既代表其内核使用的是…

作者头像 李华