144. 二叉树的前序遍历 [春招刷题]

99 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)

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

示例 1:

image.png

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

示例 2:

输入:root = []
输出:[]

示例 3:

输入:root = [1]
输出:[1]

示例 4:

image.png

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

示例 5:

image.png

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

  提示:

  • 树中节点数目在范围 [0, 100] 内
  • -100 <= Node.val <= 100  

进阶:递归算法很简单,你可以通过迭代算法完成吗?

二、思路分析:

二叉树是最好的递归结构。前序遍历就是先开始遍历根节点,然后分别递归调用遍历根节点的左右子树。当遍历完左子树再遍历右子树 做法: 1、定义一个list用来放节点的值。并调用递归方法开始递归。从根节点开始 2、递归结束条件:节点为空时结束。 3、如果没有结束走到下一步。将节点的值放到list中。 4、分别递归调用左子树和右子树

三、AC 代码:

class Solution {
    //方法一:递归法前序遍历二叉树
    public static List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        preTra(root, list);
        return list;
    }

    private static void preTra(TreeNode root, List<Integer> list) {
        if (root == null) return;
        list.add(root.val);
        preTra(root.left, list);
        preTra(root.right, list);
    }
}

四、总结:

二叉树还是比较重要的,遍历又有好多种方法,大学的数据结构该捡起来了。

范文参考

二叉树的前序遍历 - 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)

史上最全遍历二叉树详解 - 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)