Poison

94. Binary Tree Inorder Traversal

Recursion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
// left -> root -> right

List<Integer> list = new LinkedList<>();
recur(list, root);
return list;
}

private void recur(List<Integer> list, TreeNode node) {
if (node == null) {
return;
}

recur(list, node.left);
list.add(node.val);
recur(list, node.right);
}
}
Iterate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
// left -> root -> right

List<Integer> numList = new ArrayList<>();

Stack<TreeNode> stack = new Stack<>();
while (!stack.isEmpty() || root != null) {
while (root != null) {
stack.push(root);
root = root.left;
}

// now: root is null
TreeNode node = stack.pop();
numList.add(node.val);
root = node.right;
}

return numList;
}
}
Reference

94. Binary Tree Inorder Traversal