(迭代法) 94. 二叉树的中序遍历

原题链接:(迭代法) 94. 二叉树的中序遍历

思路:
使用迭代法跟前序遍历不一样,并不能通过交换顺序来达成中序遍历
1.迭代法的中序遍历为左中右,只要用来存储遍历结点顺序的栈为空且叶子结点为空,就代表遍历结束,退出循环
2.先使用指针cur存储root,然后只要cur不为NULL 也就是不为叶子结点,那就将该结点push进栈中
3.如果cur为叶子结点,此时左子树遍历完成,开始处理中的逻辑
4.获取栈顶结点元素,将栈顶结点元素弹出,将获取到的结点的值push_back进result容器中,然后再将cur的右子树push进栈中进行新一轮中序遍历
5.遍历完成时,将result返回即可

全代码:

class Solution {
public:
    vector<int> inorderTraversal(TreeNode* root) {
        stack<TreeNode* >stackA;
        vector<int> result;
        TreeNode* cur = root;
        while(cur != NULL || !stackA.empty())
        {//如果栈为空且叶子结点为空,就代表遍历结束,退出循环
            if(cur != NULL)
            {//结点不为空,将结点push进栈内
                stackA.push(cur);
                //结点等于结点的左子树
                cur = cur ->left;
            }else
            {//结点为空,获取栈顶元素
                cur = stackA.top();
                //将栈顶元素弹出
                stackA.pop();
                //将获取到的元素的值push进容器中
                result.push_back(cur ->val);
                //结点等于结点的右子树
                cur = cur ->right;                
            }
        }
        //返回容器
        return result;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

徒步“三色”泸溪 共赏冬日胜景

&#xff08;金笛 胡灵芝&#xff09;11月11日&#xff0c;“中国体育彩票”2023年“走红军走过的路”徒步穿越系列活动&#xff08;泸溪站&#xff09;暨泸溪文旅推荐活动在泸溪县举行&#xff0c;来自全国各地千余名户外爱好者通过徒步的方式&#xff0c;传承红色基因&#x…

C语言全部关键字解析

前言 C语言具有以下关键字&#xff1a; 这些关键字如下: 关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile 对于这些关键字&#xff0c;大…

《RN移动开发实战》3出版了,文末抽奖

前言 众所周知&#xff0c;传統的原生Android、iOS开发技术虽然比较成熟&#xff0c;但是多端重复开发的成本和开发效率的低下也是很多企业不愿意看到的&#xff0c;而不断崛起的跨平台技术让企业看到了曙光&#xff0c;“一次编写&#xff0c;处处运行”也不再是难以企及的目…

代码随想录算法训练营第四十六天|139. 单词拆分、多重背包问题、总结

第九章 动态规划part08 139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 关于字符串类型的题目还是…

大数据治理——为业务提供持续的、可度量的价值(二)

第二部分&#xff1a;元数据集成体系结构 在明确了元数据管理策略后需要确定实现该管理策略所需的技术体系结构&#xff0c;即元数据集成体系结构。元数据集成体系结构涉及到多个概念&#xff0c;如元模型、元-元模型、公共仓库元模型&#xff08;CWM&#xff09;等&#xff0…

Shopee活动取消规则是什么?shopee官方促销活动怎么取消?

作为一家知名的电商平台&#xff0c;shopee官方对于消费者取消促销活动的请求给予了相应的规定和处理流程。 shopee活动取消规则是什么&#xff1f; 首先&#xff0c;消费者应该明确了解虾皮的促销活动取消规则。根据虾皮的官方规定&#xff0c;消费者在参与促销活动之前&…

win环境Jenkins高级配置各种插件和启动jar包

今天分享Jenkins高级配置各种插件&#xff0c;在看此篇之前必须先了解上一篇博客内容&#xff0c;因为此篇是在上篇的基础上完善的&#xff1a; 一、git仓库的多分支选择 想要多分支选择部署&#xff0c;需要全局安装Git parameter 插件 1、点击入口 来到 2、点击进入 安装一…

在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch

目录 1 查看本机CUDA版本 2 查看对应CUDA的对应pytorch版本安装 3 用pip 安装 4 用conda安装 5 验证安装 在PyTorch中使用CUDA&#xff0c;根据你的具体环境和需求调整版本号&#xff0c;确保安装的PyTorch版本与你的CUDA版本兼容。 在PyTorch中使用CUDA&#xff0c;你需…

短视频矩阵系统源码--剪辑/矩阵/分发/直播

短视频矩阵系统源码--剪辑/矩阵/分发/直播 短视频矩阵系统开发&#xff0c;首先对服务器要求&#xff1a; 源码所需服务器配置 1、规格&#xff1a;最低8核16G 2、硬盘&#xff1a;系统盘40-100G&#xff0c;数据盘不低于100G 3、带宽&#xff1a;10M 4、系统&#xff1a;…

【分布式】tensorflow 1 分布式代码实战与说明;单个节点上运行 2 个分布式worker工作线程

tensorflow.python.framework.errors_impl.UnknowError: Could not start gRPC server 1. tf分布式 一台电脑服务器server是一个节点&#xff0c;包含了多个GPU。首先分布式的方式就是让多台电脑上的gpu共同干活。 分布式工作分为两个部分&#xff0c;parameter server&#…

RetroMAE论文阅读

1. Introduction 在NLP常用的预训练模型通常是由token级别的任务进行训练的&#xff0c;如MLM和Seq2Seq&#xff0c;但是密集检索任务更倾向于句子级别的表示&#xff0c;需要捕捉句子的信息和之间的关系&#xff0c;一般主流的策略是自对比学习&#xff08;self-contrastive …

人工智能基础——Python:Pillow与图像处理

人工智能的学习之路非常漫长&#xff0c;不少人因为学习路线不对或者学习内容不够专业而举步难行。不过别担心&#xff0c;我为大家整理了一份600多G的学习资源&#xff0c;基本上涵盖了人工智能学习的所有内容。点击下方链接,0元进群领取学习资源,让你的学习之路更加顺畅!记得…

vscode 终端进程启动失败: shell 可执行文件“C:\Windows\System32\WindowsPower

vscode 终端进程启动失败: shell 可执行文件“C:\Windows\System32\WindowsPower 第一次用vscode&#xff0c;然后遇到这个问题&#xff0c;在设置里搜索 terminal.integrated.defaultProfile.windows 将这里的null改成"Command Prompt" 重启就可以了

pyqt环境搭建

创建虚拟环境 # 用管理员身份运行 conda create --prefixE:\Python\envs\pyqt5stu python3.6 # 激活虚拟环境 conda activate E:\Python\envs\pyqt5stu # 退出虚拟环境 conda deactivate安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools…

水果音乐编曲软件 FL Studio v21.1.1.3750 中文免费破解版下载(附中文设置教程)

FL studio21中文别名水果编曲软件&#xff0c;是一款全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室&#xff0c;它为您提供了一个集成的开发环境&#xff0c;使用起来非常简单有效&#xff0c;您的工作会变得…

Snipaste截图工具--------开机后自启动设置

1&#xff0c;找到安装Snipaste的目录&#xff0c;创建快捷方式 2&#xff0c;按winR打开运行框&#xff08;输入shell:startup) 3&#xff0c;将刚才创建的快捷方式拖入此文件夹

58基于matlab的采样的运动规划算法-RRT(Rapidly-exploring Random Trees)

基于matlab的采样的运动规划算法-RRT(Rapidly-exploring Random Trees)&#xff0c;3D和2D,原始的RRT算法中将搜索的起点位置作为根节点&#xff0c;然后通过随机采样增加叶子节点的方式&#xff0c;生成一个随机扩展树&#xff0c;当随机树的叶子节点进入目标区域&#xff0c;…

数据结构与算法—搞懂队列

csdn专栏&#xff1a;数据结构与算法 前言 栈和队列是一对紧密相关的数据结构。之前已经介绍过栈&#xff08;它遵循后进先出的原则&#xff09;&#xff0c;栈的机制相对简单&#xff0c;就像你进入一个狭窄的山洞&#xff0c;山洞只有一个出入口&#xff0c;因此你只能按照后…

Shopee的折扣活动怎么分类?shopee设置折扣注意事项

旺季到来&#xff0c;Shopee会举办一些折扣活动来吸引客户&#xff0c;那么shopee的折扣活动怎么分类&#xff0c;shopee设置折扣注意事项&#xff1f; shopee的折扣活动怎么分类&#xff1f; 满减活动&#xff1a;满减活动是虾皮常见的一种折扣形式。在这种活动中&#xff0…

Citespace的使用

CiteSpace CiteSpace的相关介绍运行CiteSpace CiteSpace的相关介绍 CiteSpace作为一款优秀的文献计量学软件&#xff0c;能够将文献之间的关系以科学知识图谱的方式可视化地展现在我们面前。简单来说&#xff0c;面对海量的文献&#xff0c;CiteSpace能够迅速锁定自己需要关注…