O(n) O(h)
Intuition
Preorder visits the node first, then its left subtree, then its right subtree.
Explanation
Node, Left, Right
dfs(node):
if node is None: return
visit node.val
dfs(node.left)
dfs(node.right)
Worked example
[1,null,2,3] → [1,2,3].
Complexity
- Time: O(n).
- Space: O(h).
Implementation
import java.util.ArrayList;
import java.util.List;
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
dfs(root, res);
return res;
}
private void dfs(TreeNode node, List<Integer> res) {
if (node == null) return;
res.add(node.val);
dfs(node.left, res);
dfs(node.right, res);
}
}