Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes' values.

Have you met this question in a real interview? Yes Example Given:

    1
   / \
  2   3
 / \
4   5

return [1,2,4,5,3].

Solution: Binary tree preorder traverse.

Recursive:

public ArrayList<Integer> preorderTraversal(TreeNode root) {
    if(root == null) {
        return new ArrayList<>();
    }
    ArrayList<Integer> res = new ArrayList<Integer>();
    preOrder(root, res);
    return res;
}

public void preOrder(TreeNode root, List<Integer> res) {
    if(root == null) {
        return ;
    }   
    res.add(root.val);
    preOrder(root.left, res);
    preOrder(root.right, res);
}

Iterative:

public ArrayList<Integer> preorderTraversal(TreeNode root) {
    if(root == null) {
        return new ArrayList<>();
    }
    Stack<TreeNode> stack = new Stack<TreeNode>();
    ArrayList<Integer> res = new ArrayList<Integer>();
    stack.push(root);
    while(!stack.isEmpty()) {
        TreeNode tmp = stack.pop();
        res.add(tmp.val);
        if(tmp.right != null) {
            stack.push(tmp.right);
        }
        if(tmp.left != null) {
            stack.push(tmp.left);
        }
    }
    return res;
}

results matching ""

    No results matching ""