LeetCode热题(JS版) - 144. 二叉树的前序遍历

225 阅读1分钟

题目

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

示例:

image.png

输入: [1,null,2,3] 输出: [1,2,3]

思路

前序遍历:先遍历根节点,再遍历左子树,最后遍历右子树。

对于二叉树的遍历问题,我们可以使用递归和迭代两种方法。

本题采用递归的方式实现前序遍历。具体思路是:先访问根节点,再递归遍历左子树,最后递归遍历右子树。

代码如下:

function preorderTraversal(root: TreeNode | null): number[] {
  const res: number[] = []
  if (!root) return res

  const preOrder = (node: TreeNode | null) => {
    if (!node) return
    res.push(node.val)
    preOrder(node.left)
    preOrder(node.right)
  }

  preOrder(root)

  return res
}

image.png

复杂度分析:

  • 时间复杂度:O(n),其中 n 是二叉树中的节点数。每个节点恰好被遍历一次。

  • 空间复杂度:O(n),空间复杂度取决于递归的深度,而树最坏情况下为链状,因此空间复杂度为 O(n)。