Recursive version
void inorder(Node node, List result) {
if (node == null) return;
inorder(node.left, result);
result.add(node.val);
inorder(node.right, result);
} Advertisement
Iterative with stack
Deque stack = new ArrayDeque<>();
Node cur = root;
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
cur = stack.pop();
result.add(cur.val);
cur = cur.right;
} Advertisement
Property: BST sorted
In-order of BST = sorted values. Powers BST validation, kth smallest, iterator design.
Recursive version
void inorder(Node node, List result) {
if (node == null) return;
inorder(node.left, result);
result.add(node.val);
inorder(node.right, result);
} Iterative with stack
Deque stack = new ArrayDeque<>();
Node cur = root;
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
cur = stack.pop();
result.add(cur.val);
cur = cur.right;
} Property: BST sorted
In-order of BST = sorted values. Powers BST validation, kth smallest, iterator design.
Complexity
O(N) time, O(H) space where H = tree height. Balanced: O(log N). Skewed: O(N).