👨🎓作者:bug菌 ✏️博客:CSDN、掘金等 💌公众号:猿圈奇妙屋 🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。 🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
题目:
给你二叉树的根节点
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
题目来源:LeetCode官网 题目难度:⭐⭐
LeetCode-94. 二叉树的中序遍历(day19)
所谓二叉树的前序遍历:它是按照访问根节点->左子树->右子树顺序方式来遍历这棵树,而在访问二叉树的左子树或者右子树的时候,我们按照同样的顺序遍历,直到遍历完整棵树即可。这不就是你们喜欢的递归法,纯天然契合,套娃模式开启。
AC代码
具体算法代码实现如下:
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
//定义一个全局变量。用于存放节点
List<Integer> res = new ArrayList<Integer>();
preorder(root, res);
return res;
}
//按根节点->左子树->右子树顺序遍历
public void preorder(TreeNode root, List<Integer> res) {
//遇空直接返回
if (root == null) {
return;
}
//根节点->左子树->右子树顺序
leetcode提交运行结果截图如下:
复杂度分析:
总而言之,这种题就是你懂它的遍历顺序,然后写法都一致的,懂一种解题思路即可,比如你们最喜欢的递归法,这就很契合,但不是什啥时候就讲究递归啊,比如这题其实迭代也不错,相对递归就是麻烦一点,感兴趣的小伙伴欢迎尝试。
再者,解题道路千万条,欢迎小伙伴们脑洞大开,如果你们有啥更好的想法或者思路,欢迎评论区告诉我哦,大家一起互相借鉴互相学习,方能成长的更快。
好啦,以上就是本期的所有内容啦,咱们下期见咯。