【82.二叉树的前序遍历】

69 阅读1分钟

题目

给你二叉树的根节点 root ,返回它节点值的 前序 **遍历。

示例 1:

输入: root = [1,null,2,3]

输出: [1,2,3]

题解

方式一:递归

List<Integer> result = new LinkedList<>();

public List<Integer> preorderTraversal(TreeNode root) {
    if (root == null) {
        return new ArrayList<>();
    }
    result.add(root.val);
    preorderTraversal(root.left);
    preorderTraversal(root.right);
    return result;
}

方式二:迭代

public List<Integer> preorderTraversal(TreeNode root) {
    if (root == null) return new ArrayList<>();

    List<Integer> result = new LinkedList<>();
    Stack<TreeNode> stack = new Stack<>();

    while (root != null || !stack.isEmpty()) {
        while (root != null) {
            stack.push(root);
            result.add(root.val);
            root = root.left;
        }
        root = stack.pop();
        root = root.right;
    }

    return result;
}

总结

算法:递归迭代