HOT36-二叉树的中序遍历

news2024/11/16 17:30:50

        leetcode原题链接:二叉树的中序遍历

题目描述

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

示例 1:

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

示例 2:

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

示例 3:

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

提示:

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

解题方法:用一个stack依次将root的一层层的left节点压入栈中,所有的left节点压入栈后,栈顶元素则为当前最左侧的节点,则访问该节点,访问完后将该节点的right节点压入栈中,并重复上述过程直到栈顶为空。

C++代码

#include <iostream>
#include <stack>
#include <vector>
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        if (!root) {
            return {};
        }
        TreeNode* p = root;
        std::stack<TreeNode*> s;
        std::vector<int> result;
        while(p || !s.empty()) {
            while(p) {
                s.emplace(p);
                p = p->left;
            }
            TreeNode* p_top = s.top();
            s.pop();
            if (!p_top) { //leetcode对所有的指针都有非空的判断,否则编译无法通过
                continue;
            }
            result.emplace_back(p_top->val);
            if (p_top->right) {
                p = p_top->right;
            }  
        }
        return result;
    }
};

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

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

相关文章

BUUCTF藏藏藏

也是一个图片文件&#xff0c;和一个txt文件 txt文件中是一个提交flag格式&#xff0c;没啥用 拿去010打开后发现可能存在隐藏文件 这个格式说明还有解压文件吧&#xff0c;但是为啥分离不出来呢 刚好有另外一个分离文件的软件foremost 解压后打开在zip文件下有一个福利docx文件…

【零基础入门学习Python---Python网络编程保姆级教程】

&#x1f680; Python &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

GDB寻找segmentation fault位置

一、在当前文件夹下生成指定二进制文件的core文件 查看允许core文件空间大小&#xff1a; ulimit -c修改core文件空间为无限大&#xff1a; ulimit -c unlimited让core文件生成在当前目录下&#xff1a; sudo bash -c echo core.%e.%p > /proc/sys/kernel/core_pattern再…

2023黑马头条.微服务项目.跟学笔记(二)

2023黑马头条.微服务项目.跟学笔记 二 app端文章查看&#xff0c;静态化freemarker,分布式文件系统minIO今日简介学习内容1.文章列表加载1.1 需求分析1.2 表结构分析思考:表的垂直拆分 1.3 导入文章数据库1.3.1 导入数据库1.3.2 导入对应的实体类总结 1.4 实现思路1.4.1 sql练习…

hippo - 提升我们团队工程效率的工具

1. 背景 我们 shopeepay 团队是一个比较大的前端团队&#xff08;80成员&#xff09;&#xff0c;团队内部分布着 react native、javascript npm包、react component npm包、serverless、普通的react工程等多种类型的项目&#xff0c;每种项目类型中的每个项目都有它们自己的配…

Windows 使用Git使用Gitee仓库

1.本地创建文件夹。图中例子&#xff0c;我在桌面创建了文件夹。 2.打开 Git Bash Here. 3.Git Bash 的部分指令。 ls 查看当前文件夹 mkdir gittest01 创建文件夹 cd gittest01 进入文件夹 git init 创建本地仓库 git config --global user.name"chengqian" 创建者…

Redis主从复制模式的2

搭建完后可以去测试一下这几个问题: 1.主机中的数据会复制到从节点中 2.主机中新增的数据会同步到从节点中 3.redis集群后,从节点只能读(slave),主节点可以写(master) 4.主机重启后还是主节点 5.从机重启后也会变成主节点 血脉相传 一个主机master理论上可以有多个从机slave…

抖音短视频矩阵号系统开发者开源部署分享(一)

抖音是一款备受欢迎的短视频APP&#xff0c;拥有数亿的用户&#xff0c;其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频&#xff0c;抖音SEO是必不可少的一环&#xff0c;特别是对于拥有企业或个人品牌的用户来说。在这个过程中&#xff0c;抖音SEO源码的开源部…

【前端工程化】比gzip压缩更优的br压缩

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;2022年度博客之星前端领域TOP 2&#xff0c;前端领域优质作者、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步…

2.4g无线芯片G350产品介绍

G350是一款2.4GHz的无线收发芯片&#xff0c;具有低成本和高集成度的特点。它集成了发射机、接收机、频率综合器和GFSK调制解调器&#xff0c;为无线通信系统提供了完整的解决方案。 该芯片采用了低功耗设计&#xff0c;在各个环节都降低功耗以提高电池使用寿命。即使在最低电流…

STM32 Proteus UCOSII系统简易时钟计时系统-0054

STM32 Proteus UCOSII系统简易时钟计时系统-0054 Proteus仿真小实验&#xff1a; STM32 Proteus UCOSII系统简易时钟计时系统-0054 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器 1.单片机程序使用UCOSII操作系统&#xff0c;显示任务、时间计算任…

【Python 随练】学用 line 函数画直线

题目&#xff1a; 画图&#xff0c;学用line函数画直线。 简介&#xff1a; 在本篇博客中&#xff0c;我们将介绍如何使用Python的绘图库来画直线。我们将使用line函数来绘制直线&#xff0c;并提供一个完整的代码示例来演示其用法。 绘制直线&#xff1a; 要绘制直线&…

开源项目管理工具Plane

本文软件由网友 不长到一百四誓不改名 推荐&#xff0c;不过这次是在他推荐之前&#xff0c;就已经完成了的 &#x1f642; 什么是 Plane &#xff1f; Plane 是一个简单的、可扩展的、开源的项目和产品管理工具。它允许用户从一个基本的任务跟踪工具开始&#xff0c;逐步采用各…

初步学习使用SpringBoot框架

对于SpringBoot框架介绍大家可以看看这个这篇文章&#xff0c;SpringBoot优缺点以及如何安装使用 以下我是按照老师给的安装方法进行安装使用SpringBoot框架&#xff1a; 大家安装SpringBoot框架时候&#xff0c;最好安装3.0以下的&#xff0c;不然需要对应较高版本的JDK版本&…

导航栏,封装Api接口,数据处理 过滤器,Echarts使用(二)

文章目录 一、左侧导航栏El的元素颜色重写导航开启router模式导航栏折叠&#xff08;兄弟页面传数据 借助父亲&#xff09; 二、封装请求的Api接口接口地址管理配置跨域 三、数据处理 过滤器四、使用EchartsDemo: 使用 ECharts项目中使用Echarts 接上篇&#xff08;一&#xff…

时序预测 | MATLAB实现BO-NARX贝叶斯优化非线性自回归外生模型股票价格预测

时序预测 | MATLAB实现BO-NARX贝叶斯优化非线性自回归外生模型股票价格预测 目录 时序预测 | MATLAB实现BO-NARX贝叶斯优化非线性自回归外生模型股票价格预测效果一览基本介绍研究过程程序设计参考资料效果一览

好视力、南卡、欧普护眼台灯哪个护眼效果更出色?看完这篇测评你就明白了

现在的孩子&#xff0c;学习任务都非常繁重&#xff0c;想想我们小时候基本上没什么作业&#xff0c;但是现在的孩子感觉每天都有做不完的功课和试卷&#xff0c;除此之外&#xff0c;还有家长给报的各种学习班、技艺班&#xff0c;为了一个更好的前途&#xff0c;这也是没办法…

office 2003 default regedit

office版本这么多&#xff0c;感觉还是2003简单&#xff0c;唉 "D:\Microsoft-Office-2003\OFFICE11\EXCEL.EXE" /regserver "D:\Microsoft-Office-2003\OFFICE11\WINPROJ.EXE" /regserver "D:\Microsoft-Office-2003\OFFICE11\POWERPNT.exe" /r…

IDEA恢复误删除的文件

idea将删除的文件放在idea文件缓存中&#xff0c;文件的更改等信息都放在这个缓存中&#xff0c;所以短时间内删除的文件可以尝试恢复。

每日一面系列-spring中@Autowired 和 @Resource 区别?

Autowired注解是由Spring提供的&#xff0c;它可以用来对构造方法、成员变量及方法参数进行标注&#xff0c;它能够根据对象类型完成自动注入&#xff0c;代码如下。 public class Service {// 构造方法注入 Autowired public Service(Service service) { this.s…