返回轨道
算法 · 2026-05-14 · 20 阅读

P35 二叉树中序遍历

算法 20 阅读

信号摘要

难度:Medium · 时长:06:30 · leetcode 94 · lintcode 67

P35 二叉树中序遍历

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个二叉树,你要返回一个数组,表示二叉树中序遍历的结果。

比如说,给你的二叉树是:
 1

/
2 3
4 / 5

你要返回的中序遍历结果是:2, 5, 4, 1, 3

代码

public class AlgoCasts {

  public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
      val = x;
    }
  }

  // Time: O(n). Space: O(n)
  public List<Integer> inorderTraversalRecursive(TreeNode root) {
    if (root == null) return new ArrayList<>();

    List<Integer> left = inorderTraversalRecursive(root.left);
    List<Integer> right = inorderTraversalRecursive(root.right);
    left.add(root.val);
    left.addAll(right);
    return left;
  }

  // Time: O(n). Space: O(n)
  public List<Integer> inorderTraversalIterative(TreeNode root) {
    Stack<TreeNode> s = new Stack<>();
    List<Integer> result = new ArrayList<>();

    while (root != null || !s.empty()) {
      while (root != null) {
        s.push(root);
        root = root.left;
      }
      root = s.pop();
      result.add(root.val);
      root = root.right;
    }

    return result;
  }

}

📡 通讯频道