Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
144. 二叉树的前序遍历 - 力扣(LeetCode) (leetcode-cn.com)
给你二叉树的根节点 root ,返回它节点值的 前序 **遍历。
示例 1:
输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
输入:root = [1,2]
输出:[1,2]
示例 5:
输入: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);
}
}
四、总结:
二叉树还是比较重要的,遍历又有好多种方法,大学的数据结构该捡起来了。
范文参考: