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;
}

results matching ""

    No results matching ""