0144. 二叉树的前序遍历
文章目录
- 题目链接
- 题目描述
- 解题思路
- 代码示例
- 复杂度分析
题目链接
https://leetcode.cn/problems/binary-tree-preorder-traversal/
题目描述
给定二叉树根节点 root,返回它的 前序遍历(根 → 左 → 右)节点值序列。
解题思路
- 使用递归:先访问根节点,再递归左子树,最后递归右子树。
- 也可以用栈迭代实现,依次 push 右子节点再 push 左子节点,从而保证先访问左子树。
代码示例
class Solution {List<Integer> ans = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {dfs(root);return ans;}public void dfs(TreeNode root) {if (root == null) return;ans.add(root.val);dfs(root.left);dfs(root.right);}
}
复杂度分析
- 时间复杂度:O(n),每个节点遍历一次。
- 空间复杂度:O(n),递归栈最坏情况下为节点总数。
