力扣-数据结构-二叉树

94. 二叉树的中序遍历

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

示例 1:

复制代码
输入:root = [1,null,2,3]
输出:[1,3,2]

示例 2:

复制代码
输入:root = []
输出:[]

示例 3:

复制代码
输入:root = [1]
输出:[1]

方法一:递归实现(最简单)

python 复制代码
# 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: TreeNode) -> list[int]:
        result = []

        def dfs(node):
            if not node:
                return
            dfs(node.left)
            result.append(node.val)
            dfs(node.right)

        dfs(root)
        return result

方法二:迭代实现(使用栈)

python 复制代码
class Solution:
    def inorderTraversal(self, root: TreeNode) -> list[int]:
        result = []
        stack = []
        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
相关推荐
vortex524 分钟前
算法设计与分析:分治、动态规划与贪心算法的异同与选择
算法·贪心算法·动态规划
前端拿破轮1 小时前
🤡🤡🤡面试官:就你这还每天刷leetcode?连四数相加和四数之和都分不清!
算法·leetcode·面试
地平线开发者1 小时前
征程 6|工具链量化简介与代码实操
算法·自动驾驶
DoraBigHead1 小时前
🧠 小哆啦解题记——谁偷改了狗狗的台词?
算法
Kaltistss2 小时前
240.搜索二维矩阵Ⅱ
线性代数·算法·矩阵
轻语呢喃2 小时前
每日LeetCode:合并两个有序数组
javascript·算法
大熊猫侯佩2 小时前
Swift 数学计算:用 Accelerate 框架让性能“加速吃鸡”
算法·swift
杰克尼3 小时前
2. 两数相加
算法
无聊的小坏坏3 小时前
单调栈通关指南:从力扣 84 到力扣 42
c++·算法·leetcode
_Coin_-3 小时前
算法训练营DAY29 第八章 贪心算法 part02
算法·贪心算法