hot 100 第三十五题 35.二叉树的中序遍历

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

示例 1:

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

示例 2:

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

示例 3:

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

核心思路

二叉树遍历有三种方式:

  • 前序:根 → 左 → 右
  • 中序:左 → 根 → 右
  • 后序:左 → 右 →根

中序遍历的结果对于二叉搜索树 来说是升序序列

解法:递归(最简单)

复制代码
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> result = new ArrayList<>();
        inorder(root, result);
        return result;
    }
    
    private void inorder(TreeNode node, List<Integer> result) {
        if (node == null) return;
        
        inorder(node.left, result);   // 左
        result.add(node.val);         // 根
        inorder(node.right, result);  // 右
    }
}
```

### 详细演示
```
二叉树:
    1
   / \
  2   3
 / \
4   5

递归调用栈:
inorder(1)
  ├─ inorder(2)
  │   ├─ inorder(4)
  │   │   ├─ inorder(null) 返回
  │   │   ├─ add(4) → [4]
  │   │   └─ inorder(null) 返回
  │   │
  │   ├─ add(2) → [4,2]
  │   │
  │   └─ inorder(5)
  │       ├─ inorder(null) 返回
  │       ├─ add(5) → [4,2,5]
  │       └─ inorder(null) 返回
  │
  ├─ add(1) → [4,2,5,1]
  │
  └─ inorder(3)
      ├─ inorder(null) 返回
      ├─ add(3) → [4,2,5,1,3]
      └─ inorder(null) 返回

结果: [4,2,5,1,3]
```

## 解法2:迭代(使用栈)

### 思路

用栈模拟递归的过程:
1. 一路向左,将所有左子节点入栈
2. 弹出栈顶,访问节点
3. 转向右子树,重复步骤1
```
核心:先找到最左边的节点,然后回溯

本质

中序遍历的核心:

  1. 递归思想 --- 左子树中序 + 根 + 右子树中序
  2. 模拟栈 --- 迭代用栈保存回溯路径
  3. Morris技巧 --- 利用空指针建立临时连接

应用场景

  • 二叉搜索树中序遍历得到升序序列
  • 验证二叉搜索树
  • 二叉搜索树中第K小元素
相关推荐
森屿~~4 分钟前
PlatEMO 深度实战解析——从底层架构到 CMOPs 与 MMO 算法魔改
算法
郝学胜-神的一滴7 分钟前
自动微分实战:梯度下降的迭代实现与梯度清零核心解析
人工智能·pytorch·python·深度学习·算法·机器学习
daad7778 分钟前
std::vector insert
算法
炽烈小老头9 分钟前
【每天学习一点算法 2026/04/07】快乐数
学习·算法
计算机安禾12 分钟前
【数据结构与算法】第31篇:排序概述与插入排序
c语言·开发语言·数据结构·学习·算法·重构·排序算法
网路末端遗传因子24 分钟前
CHO细胞培养中高乳酸与低产量的模式识别与分析
算法·机器学习·细胞培养·生物培养基开发
阿Y加油吧25 分钟前
LeetCode 中等难度 | 回溯法经典题解:组合总和 & 括号生成
算法
穿条秋裤到处跑37 分钟前
每日一道leetcode(2026.04.07):模拟行走机器人 II
leetcode·机器人
sheeta199840 分钟前
LeetCode 每日一题笔记 日期:2026.04.07 题目:2069.模拟行走机器人二
笔记·leetcode·机器人
im_AMBER41 分钟前
Leetcode 153 课程表 | 腐烂的橘子
开发语言·算法·leetcode·深度优先·图搜索