leetcode刷题-144二叉树的前序遍历

134 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

leetcode144-二叉树的前序遍历

前文

本文为菜鸟的刷题记录,仅用作笔记使用,并非最佳解决方案。

题目信息

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

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

解题思路分析

解法1

想要解决二叉树的前序遍历问题,首先我们需要知道什么是前序遍历。前序遍历就是对于二叉树的所有节点,先遍历二叉树的当前节点,再遍历二叉树的左节点,再遍历二叉树的右节点,以此形成中-左-右的遍历顺序。而显而易见二叉树的左节点同样是一颗子二叉树的根节点,二叉树的右节点也是二叉树的一个根节点。而如果我们需要遍历左节点的信息,根据题目前序遍历的要求,则需要先遍历二叉树左节点的左节点。以此类推,右节点也是同理。根据如上分析,我们可以轻松想到解题办法为递归。首先我们设置一个结果数组,然后对二叉树根节点进行处理。伴随着处理的过程,同样要操作二叉树的左右节点递归操作。因此可以得到目标遍历结果。 代码如下:

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

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

复杂度分析

  • 时间复杂度 o(n)
  • 空间复杂度 o(1)

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。