leetcode 94 binary tree inorder traversal

Given a binary tree, return the inordertraversal of its nodes’ values.

Example:

1
2
3
4
5
6
7
8
Input: [1,null,2,3]
1

2
/
3

Output: [1,3,2]

Follow up: Recursive solution is trivial, could you do it iteratively?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import utils.TreeNode;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class {
public List<Integer> inorderTraversalI(TreeNode root) {
List<Integer> ans = new ArrayList<>();
travel(root, ans);
return ans;
}
public void travel(TreeNode root, List<Integer> ans) {
if (root == null) return ;
travel(root.left, ans);
ans.add(root.val);
travel(root.right, ans);
}

public List<Integer> inorderTraversalII(TreeNode root) {
List<Integer> ans = new ArrayList<>();
Stack<TreeNode> s = new Stack<>();
TreeNode t = root;
while (t != null || !s.isEmpty()) {
while (t!= null) {
s.push(t);
t = t.left;
}
t = s.pop();
ans.add(t.val);
t = t.right;
}
return ans;
}
}