1 //Recursive
2 class Solution {
3 List<Integer> res = new ArrayList<>();
4 public List<Integer> inorderTraversal(TreeNode root) {
5 if (root != null) {
6 inorderTraversal(root.left);
7 res.add(root.val);
8 inorderTraversal(root.right);
9 }
10 return res;
11
12
13 }
14 }
15
16 //Iterate
17 class Solution {
18 List<Integer> res = new ArrayList<>();
19 public List<Integer> inorderTraversal(TreeNode root) {
20 if(root == null) return res;
21 Stack<TreeNode> stack = new Stack<>();
22 stack.push(root);
23 Set<TreeNode> visited = new HashSet<>();
24 while(!stack.empty()) {
25 TreeNode node = stack.pop();
26 while(node.left != null && !visited.contains(node)) {
27 visited.add(node);
28 stack.push(node);
29 node = node.left;
30 }
31 res.add(node.val);
32 if(node.right != null) {
33 stack.push(node.right);
34 }
35
36 }
37 return res;
38 }
39 }