LeetCode第144题:二叉树的前序遍历(二叉树)

LeetCode第144题

题目详述

给定一个二叉树,返回它的前序遍历。

解法一

递归。时间复杂度:O(n),空间复杂度:O(logn)

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        TreeNode curr = root;
        helper(curr, res);
        return res;
    }
    public void helper(TreeNode root, List res) {
        if (root != null) {
            res.add(root.val);
            if (root.left != null) helper(root.left, res);
            if (root.right != null) helper(root.right, res);
        }
    }
}

解法二

栈。时间复杂度:O(n),空间复杂度:O(n)

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        if (root == null) return new ArrayList();
        List<Integer> res = new ArrayList<>();
        Stack<TreeNode> stack = new Stack<>();
        TreeNode curr = root;
        stack.push(curr);
        while (!stack.isEmpty()) {
            curr = stack.pop();
            res.add(curr.val);
            if (curr.right != null) stack.push(curr.right);
            if (curr.left != null) stack.push (curr.left);
        }
        return res;
    }
}
发布了40 篇原创文章 · 获赞 0 · 访问量 644

猜你喜欢

转载自blog.csdn.net/weixin_42610002/article/details/104361422