小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
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)
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。