LeetCode 144二叉树的前序遍历

    技术2022-07-10  78

    题目

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

    思路一 递归

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

    思路二 迭代

    class Solution { //迭代 public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); while (!stack.isEmpty() || root != null) { if (root != null) { list.add(root.val); stack.push(root); root = root.left; } else { root = stack.pop(); root = root.right; } } return list; } }

    复杂度分析

    时间复杂度:访问每个节点恰好一次,时间复杂度为 O(N),其中 N 是节点的个数,也就是树的大小。 空间复杂度:取决于树的结构,最坏情况存储整棵树,因此空间复杂度是 O(N)。

    Processed: 0.020, SQL: 9