Binary Tree Inorder Traversal
Given a binary tree, return the inorder traversal of its nodes' values.
Example Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,3,2].
Solution: Iterative with stack or recursive.
public ArrayList<Integer> inorderTraversal(TreeNode root) {
if(root == null) {
return new ArrayList<>();
}
Stack<TreeNode> stack = new Stack<TreeNode>();
ArrayList<Integer> res = new ArrayList<Integer>();
TreeNode p = root;
while(!stack.isEmpty() || p != null) {
if(p != null) {
stack.push(p);
p = p.left;
}
else {
TreeNode n = stack.pop();
res.add(n.val);
p = n.right;
}
}
return res;
}