DFS
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) {
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 23 24
| class Solution { public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> resultList = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>(); while (root != null || !stack.isEmpty()) { while (root != null) { stack.push(root); root = root.left; }
TreeNode node = stack.pop(); resultList.add(node.val); if (node.right != null) { root = node.right; } }
return resultList; } }
|
References
94. Binary Tree Inorder Traversal