题目描述

题解(递归)
思路
中序遍历的核心规则是:左子树 -> 根节点 -> 右子树。
代码
java
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
inorder(root, res);
return res;
}
// 辅助递归函数
private void inorder(TreeNode node, List<Integer> res) {
if (node == null) {
return;
}
// 1. 遍历左子树
inorder(node.left, res);
// 2. 将当前根节点的值加入结果
res.add(node.val);
// 3. 遍历右子树
inorder(node.right, res);
}
}
复杂度分析
- 时间复杂度:O(N)O(N)O(N),其中 N 是二叉树的节点数。
- 空间复杂度:O(n)。空间复杂度取决于递归的栈深度,而栈深度在二叉树为一条链的情况下会达到 O(n) 的级别。