O(n) O(h)
Intuition
Inorder visits the left subtree, then the node, then the right subtree — for a BST this yields sorted order.
Explanation
Left, Node, Right
dfs(node):
if node is None: return
dfs(node.left)
visit node.val
dfs(node.right)
Worked example
[1,null,2,3] (1 with right child 2, whose left child is 3) → [1,3,2].
Complexity
- Time: O(n).
- Space: O(h) recursion.
Implementation
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
dfs(root, res);
return res;
}
private void dfs(TreeNode node, List<Integer> res) {
if (node == null) return;
dfs(node.left, res);
res.add(node.val);
dfs(node.right, res);
}
}