Difficulty:: Medium
Given a binary tree, return the inorder traversal of its nodes’ values.
Example:
| 12
 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?
Solution
Language: Java
| 12
 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
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 | 
 
 
 
 
 
 
 
 class Solution {
 public List<Integer> inorderTraversal(TreeNode root) {
 List<Integer> result = new ArrayList<>();
 traverse(root, result);
 return result;
 }
 
 
 private void traverse(TreeNode root, List<Integer> result) {
 if (root == null) {
 return;
 }
 traverse(root.left, result);
 result.add(root.val);
 traverse(root.right, result);
 }
 
 
 private void traverseIterative(TreeNode root, List<Integer> result) {
 if (root == null) {
 return;
 }
 Deque<TreeNode> stack = new ArrayDeque<>();
 while (root != null || !stack.isEmpty()) {
 if (root != null) {
 stack.push(root);
 root = root.left;
 } else {
 root = stack.pop();
 result.add(root.val);
 root = root.right;
 }
 }
 }
 }
 
 |