LeetCode--HOT100题(34)

news2024/10/5 18:31:48

目录

  • 题目描述:94. 二叉树的中序遍历(简单)
    • 题目接口
    • 解题思路1
    • 代码
    • 解题思路2
    • 代码
  • PS:

题目描述:94. 二叉树的中序遍历(简单)

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

LeetCode做题链接:LeetCode-二叉树的中序遍历

示例 1:
在这里插入图片描述

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

示例 2:

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

示例 3:

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

提示:

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

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

题目接口

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {

    }
}

解题思路1

递归实现:
在这里插入图片描述

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        dfs(res, root);
        return res;
    }

    private void dfs(List<Integer> res, TreeNode root) {
    	// 递归终止条件
        if (root == null) {
            return;
        }
        // 左 根 右
        dfs(res, root.left);
        res.add(root.val);
        dfs(res, root.right);
    }

}

解题思路2

迭代实现:
可以用栈来模拟上面的调用过程

  • 不断往左子树方向走,每走一次就将当前节点保存到栈中,模拟递归的调用
  • 当前节点为空,说明左边走到头了,从栈中弹出节点并保存
  • 然后转向右边节点,继续上面整个过程

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
		Stack<TreeNode> stack = new Stack<TreeNode>();
		while(stack.size()>0 || root!=null) {
			//不断往左子树方向走,每走一次就将当前节点保存到栈中
			//这是模拟递归的调用
			if(root!=null) {
				stack.add(root);
				root = root.left;
			//当前节点为空,说明左边走到头了,从栈中弹出节点并保存
			//然后转向右边节点,继续上面整个过程
			} else {
				TreeNode tmp = stack.pop();
				res.add(tmp.val);
				root = tmp.right;
			}
		}
		return res;
    }
}

成功!
在这里插入图片描述

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/894082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

el-table根据容器大小自适应滚动条-修改滚动条样式

需求&#xff1a;父容器里有多个容器为上下级&#xff0c;之后浏览器在缩放的时候&#xff0c;上面容器高度改变了&#xff0c;所以el-table被挤压&#xff0c;如果el-table设置的是固定的高度&#xff0c;那么挤压后内容超出父容器&#xff0c;本文章就是解决这个问题 不自适…

拒绝无效内卷!新同事靠着这套大屏模板效率翻倍,搭上升职快车!

竞争是职场永恒的话题&#xff0c;太多人为了升职加薪卷生卷死&#xff0c;就拿我自己身边来说&#xff0c;这段时间我所在的小组有一个升职机会&#xff0c;好多老员工为了这个机会争得头破血流&#xff0c;一个在公司待了10年的老员工&#xff0c;直接天天加班到12点&#xf…

蓝牙耳机的发展

目录 1.蓝牙耳机的概念 2.蓝牙耳机的发展过程 3.蓝牙耳机的便利性 4.蓝牙耳机未来的发展趋势 1.蓝牙耳机的概念 蓝牙耳机是一种使用蓝牙无线技术连接到音频源设备&#xff08;如智能手机、平板电脑、电脑等&#xff09;的耳机。它们通过无线蓝牙信号接收音频数据&#xff0c…

MybatisPlus的使用

一. 关于注解的使用&#xff0c;官方地址&#xff1a; 注解 | MyBatis-PlusMyBatis-Plus 官方文档https://baomidou.com/pages/223848/#tablename 1.关于TableName的使用 假设我们不加TableName("tbl_employee")的话&#xff0c;那么数据库中的表名和类名相同的话&…

Qt下拉菜单

1&#xff0c;QComboBox 2&#xff0c;setMenu()---设置下拉菜单 AI对话未来丨智能写作对话: setMenu()是QWidget类的一个成员函数&#xff0c;在Qt中用于将一个菜单作为一个控件的下拉菜单设置。具体来说&#xff0c;它会把相应的菜单对象与该控件关联&#xff0c;并在控件上…

Mysql8.0为什么取消了缓存查询的功能

首先我们介绍一下MySQL的缓存机制 【MySQL缓存机制】简单的说就是缓存sql文本及查询结果&#xff0c;如果运行完全相同的SQL&#xff0c;服务器直接从缓存中取到结果&#xff0c;而不需要再去解析和执行SQL。 但如果表中任何数据或是结构发生改变&#xff0c;包括INSERT、UPD…

问道管理:放量打拐什么意思?常见的放量打拐三种形态?

成交量一直是股票交易中比较重要的目标&#xff0c;那么&#xff0c;放量打拐是什么意思&#xff1f;常见的放量打拐三种形状是什么&#xff1f;下面问道管理为我们预备了相关内容&#xff0c;以供参阅。 放量打拐什么意思&#xff1f; 放量是指股票成交量与前几个交易日比较显…

隐私文件夹怎么加密?隐私文件夹加密方法

在个人电脑中&#xff0c;我们经常会将一些个人隐私存放在电脑文件夹中&#xff0c;这些文件夹都需要加密保护。那么&#xff0c;隐私文件夹该怎么加密呢&#xff1f;下面我们就来了解一下吧。 超级秘密文件夹 隐私数据存放在文件夹中&#xff0c;最怕的就是被其他人发现。而如…

迅镭激光中标全球集装箱行业龙头中集集团10家子公司集采项目!

迅镭激光中标喜报频传!继连续中标工程机械、钢构、船舶、电力电气、新能源等多个行业龙头企业后&#xff0c;近日再次中标全球集装箱行业龙头中集集团(CIMC)&#xff0c;这与迅镭激光坚持高端、注重技术引领、十五年的技术沉淀和口碑积累密不可分。 日前&#xff0c;中集集团20…

如何使用ChatGPT创作一个小说式的虚构的世界

世界构建也许是小说写作中最重要的一环&#xff0c;但也可能非常耗时。让ChatGPT加快这一过程吧。 写小说最棒的一点就是有机会从零开始创造一个新世界。你可以创造超凡脱俗的景观&#xff0c;赋予人物魔法。神话故事可以存在于你小说中的现实世界&#xff0c;而传统可以帮助你…

gazebo仿真ros2两轮差速小车没有控制的情况下缓慢移动后退

最近在做一款2轮差速的机器人小车&#xff0c;在做gazebo仿真的时候&#xff0c;发现小车一直在缓慢的后退&#xff0c;一边后退一边缓慢拐弯。 环境&#xff1a;ros2 foxy gazebo-11 小车xacro模型代码 <?xml version"1.0"?> <robot name"jtb…

华为OD机试 - 查找接口成功率最优时间段 - 回溯(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

【图书推荐 | 测试】—《测试设计思想》

前言 随着科技的不断发展&#xff0c;互联网的不断进步&#xff0c;日益出现了一种趋势&#xff1a;测试设计将成为一种跨领域的综合性工作&#xff0c;测试者将成为一种跨领域的通用型人才。由此清华大学出版社推出了一本名为《测试设计思想》的书籍&#xff0c;由知名专家周…

分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

文章目录 背景分析 问题来了比较一开始的情况解决方式 背景 之前有分析过一次类似问题&#xff0c;最终结论是在keyby之后&#xff0c;其中有一个key数量特别庞大&#xff0c;导致对应的subtask压力过大&#xff0c;进而使得整个job不再继续运作。在这个问题解决之后&#xff…

数据分析15——office中的Excel基础技术汇总

0、前言&#xff1a; 这部分总结就是总结每个基础技术的定义&#xff0c;在了解基础技术名称和定义后&#xff0c;方便对相关技术进行检索学习。笔记不会详细到所有操作都说明&#xff0c;但会把基础操作的名称及作用说明&#xff0c;可自行检索。本文对于大部分读者有以下作用…

火山引擎DataLeap:助力PICO落地数据流程规范,提升开发效率

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 作为目前中国市场领跑的头部XR品牌之一&#xff0c;字节跳动旗下的PICO已经拥有了超百万客户。 过去一年&#xff0c;PICO在XR场景中不断建设和发力&#xff0c;为运…

更好的 3D 网格,从重建到生成式 AI

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 这些生成的 3D 模型通常提取为标准三角形网格。网格表示提供了许多好处&#xff0c;包括支持现有软件包、高级硬件加速和支持物理仿真。但是&#xff0c;并非所有网格都是平等的&#xff0c;这些优势只…

在南非发现地球上最古老冰川的证据

古老的冰川暗示着太古代地球在某些方面可能与我们所处的时代相似。 29 亿年前的地球可能有像阿根廷南部冰川国家公园的佩里托莫雷诺冰川这样的冰川。图片来源&#xff1a; Martin St-Amant/维基百科 《地球化学展望快报》上发表的一项 新研究报告称&#xff0c;早在 30 亿年前…

离心机使用操作说明(记录备忘)

关于离心机的使用步骤做一简单记录 1.配准 2.装载&#xff08;对称性放置&#xff09; 3.确认&#xff08;装载完毕之后确认&#xff0c;轻轻转动&#xff09; 4.盖锅盖 5.关闭主盖 6.设置参数 7.运行 开始加速之后 转速会持续增加至设定值&#xff0c;离心结束后&#xff0c…