力扣(144.94)补9.4
144.二叉树的前序遍历
递归代码倒不难,但仔细想想为什么这样递归我又是一头雾水,为什么这样递归能实现前序遍历呢,递归的本质还是没懂。用栈实现递归我也没懂。。。真的超级无敌烧脑。
class Solution {
public void preorder(TreeNode root,List<Integer>ans){
if(root==null)
return ;
ans.add(root.val);
preorder(root.left,ans);
preorder(root.right,ans);
}
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ans=new ArrayList<Integer>();
preorder(root,ans);
return ans;
}
}
以下是栈的解法,自己模拟一遍发现确实没啥问题,但是为什么代码这样写呢。。。
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> ans=new ArrayList<>();
Stack<TreeNode> stack=new Stack<>();
if(root==null)
return ans;
stack.push(root);
while(stack.isEmpty()==false){
TreeNode node=stack.pop();
ans.add(node.val);
if(node.right!=null){
stack.push(node.right);
}
if(node.left!=null){
stack.push(node.left);
}
}
return ans;
}
}
94.二叉树的中序遍历
递归的解法就不放了,递归这东西,看了一眼会了,但仔细思考又发觉不会。中序遍历时栈的实现和前序和后序都不一样呢。
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
Stack<TreeNode> stack=new Stack<>();
List<Integer> ans=new ArrayList<>();
if(root==null)
return ans;
TreeNode cur=new TreeNode();
cur=root;
while(stack.isEmpty()==false||cur!=null){
if(cur!=null){
stack.push(cur);
cur=cur.left;
}
else{
cur=stack.pop();
ans.add(cur.val);
cur=cur.right;
}
}
return ans;
}
}
力扣(144.94)补9.4相关推荐
- 力扣(Leetcode)-94. 二叉树的中序遍历
描述 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 ...
- 力扣 双周赛补题 2086. 从房屋收集雨水需要的最少水桶数
文章目录 题目 思路 AC代码 后记 题目 从房屋收集雨水需要的最少水桶数 思路 思路是贪心,因为我们需要从左向右找寻所有的水桶数,所以我们对于每一个房屋都优先判断右边是否能放水桶,右边不能放就看左边 ...
- 力扣学习记录(每日更新)
文章目录 引言 简单 力扣:1 两数之和 力扣:20 有效的括号 力扣:21 合并两个有序链表 力扣:22 括号生成 力扣:27 移除元素 力扣: 35 搜索插入位置 力扣:70 [爬楼梯](http ...
- 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java
<LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...
- (补)20210623:力扣第246周周赛(下)
力扣第246周周赛(下) 题目 思路与算法 代码实现 写在最后 题目 统计子岛屿 查询差绝对值的最小值 思路与算法 统计子岛屿 : 老DFS了,总之就是遍历题,无需多言,搜就行了. 查询差绝对值的最小 ...
- (补)20200911:力扣204周周赛题解下
力扣204周周赛题解下 题目 思路与算法 代码实现 写在最后 题目 3.1568. 使陆地分离的最少天数 思路与算法 本周周赛第三题勉强可以看看,第四题超出我目前的水平,跳过.第三题是一个典型的dfs ...
- 力扣第314场周赛补题
1.题目:6200. 处理用时最长的那个任务的员工 - 力扣(LeetCode) 思路:两个数组记录处理时间与结果,通过遍历最长时间 class Solution { public:int harde ...
- (补)算法训练第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和
代码随想录算法训练营第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和 454.四数相加II 题目链接:四数相加II 参考:https://programmerc ...
- 力扣第303场周赛补题
力扣 第三题:设计食物评分系统 示例 输入 ["FoodRatings", "highestRated", "highestRated", ...
- 力扣(简单+中等)50题整理总结
文章目录 前言 一.简单题 1. 两数之和 7. 整数反转 9. 回文数 13. 罗马数字转整数 14. 最长公共前缀 20. 有效的括号 21. 合并两个有序链表 26. 删除有序数组中的重复项 2 ...
最新文章
- 【收藏】Docker安装微信
- 反思网络中的观点:太过杂乱 需要很强的甄别能力
- 武林c语言,详解C语言中条件编译
- JAVA面向对象初步知识总结:封装、继承、多态
- java socket 握手_TCP建立连接三次握手过程详解(wireshark截图、java socket源码)
- Java第二章:数据类型和运算符
- Ajax与jQuery异步加载数据
- HTTP1.1与HTTP1.0
- RHCE 学习笔记(32) - DNS
- 用Unity3D实现打飞碟游戏
- WMI的讲解(是什么,做什么,为什么)
- Spatial Join学习
- 学习笔记,什么是双活
- 东北师范大学计算机学院的导师李俊,东北师范大学计算机科学与信息技术学院研究生导师简介-胡丽红...
- 电影评论分类:二分类问题 —— R语言实现
- ggplot2中1单位线条和字体的究竟相当于多少pt?
- Zeal离线文档下载,以及报错解决方法
- C语言打字游戏(无错误警告版)
- 【完善】微信餐厅点单小程序+后台管理系统的设计与实现(python实现)
- 计算机系统结构划分,计算机系统结构59288.ppt