【LeetCode】94.二叉树的中序遍历

题目

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

解答

源代码

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        dfs(res, root);

        return res;
    }

    public void dfs(List<Integer> res, TreeNode root) {
        if (root == null) {
            return;
        }

        dfs(res, root.left);
        res.add(root.val);
        dfs(res, root.right);
    }
}

总结

这题用递归回溯很简单,只要记得中序遍历是左中右就行,那么添加元素的操作放在左右递归的中间。

相关推荐
2401_8414956426 分钟前
【数据结构】基于Prim算法的最小生成树
java·数据结构·c++·python·算法·最小生成树·prim
祈祷苍天赐我java之术2 小时前
解析常见的限流算法
java·数据结构·算法
Shinom1ya_3 小时前
算法 day 34
算法
啊董dong3 小时前
课后作业-2025-10-26
c++·算法·noi
liu****3 小时前
1.模拟算法
开发语言·c++·算法·1024程序员节
小猪咪piggy3 小时前
【算法】day10 分治
数据结构·算法·排序算法
又是忙碌的一天3 小时前
算法学习 13
数据结构·学习·算法
June`3 小时前
前缀和算法:高效解决区间和问题
算法·1024程序员节
再卷也是菜3 小时前
算法基础篇(9)倍增与离散化
c++·算法
ゞ 正在缓冲99%…6 小时前
leetcode2826.将三个组排序
算法·leetcode·动态规划