news 2026/6/10 15:16:04

【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/6/10 10:57:03

如何使用 Markdown 和思维导图可视化你的想法

本文转载自&#xff1a;AI225在线工具箱&#xff0c;原文链接&#xff1a;https://tools.ai225.com/articles/visualize-ideas-with-markdown-mindmap/ 在日常工作和学习中&#xff0c;我们经常需要整理复杂的想法或规划项目。Markdown 擅长快速记录线性的文字内容&#xff0c…

作者头像 李华
网站建设 2026/6/10 13:42:48

AI模型训练:数据获取与增强

数据是训练一切模型的基础&#xff0c;因此如何获取数据就成了一个先行条件。 1.常见的机器学习数据集 &#xff08;1&#xff09;MNIST 属于计算机视觉领域&#xff0c;手写数字灰度图&#xff0c;包含有六万的训练集以及一万的测试集。 &#xff08;2&#xff09;ImageNet…

作者头像 李华
网站建设 2026/6/10 10:56:24

Windows下快速安装Python GDAL指南

在Windows系统下安装GDAL包&#xff08;适用于Python 3.7版本&#xff09;的完整指南&#xff1a; 步骤1&#xff1a;确认环境信息 打开命令提示符&#xff08;cmd&#xff09;执行&#xff1a; python -c "import platform; print(platform.architecture()[0], platfo…

作者头像 李华
网站建设 2026/6/10 10:56:03

YOLO26涨点改进 | 首发全网创新、主干改进篇 | AAAI 2026 | PartialNet 主干让 YOLO26 更加强大!引入部分通道机制 和 部分注意力卷积,全方面提升了模型的性能

一、本文介绍 ⭐本文介绍将 PartialNet 改进 YOLO26 的主干网络,通过引入 部分通道机制(PCM) 和 部分注意力卷积(PATConv),显著提升了计算效率和推理速度,同时保持了较高的检测精度。PartialNet 通过拆分特征图通道并对不同部分应用不同的操作,减少了计算量和内存占用…

作者头像 李华
网站建设 2026/6/10 14:57:42

YOLO26涨点改进 | 全网独家创新/Conv篇 | AAAI 2025 | PConv新型风车形卷积和SPConv二次创新改进(移动风车卷积,使它充分活跃起来),增强特征提取,扩大感受野

一、本文介绍 本文给大家介绍一种PConv新型风车形卷积优化YOLO26模型!含二次创新SPConv移动风车卷积。针对红外小目标检测中标准卷积忽略像素高斯分布的问题,本文提出了一种新型风车形卷积(PConv),它通过不对称填充和组卷积有效地扩展了感受野并增强了底层特征提取能力。…

作者头像 李华