二叉树 遍历迭代法

二叉树 遍历迭代法

Leetcode 94

/*** 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) {
//         stack<TreeNode*> st;
//         vector<int> path;
//         if(root == nullptr) return path;
//         st.push(root);//         while(!st.empty()){
//             TreeNode* cur = st.top();
//             st.pop();
//             path.push_back(cur->val);  // 中
//             if(cur->right != nullptr) st.push(cur->right);  // 右
//             if(cur->left != nullptr) st.push(cur->left);  // 左
//         }
//         return path;
//     }
// };// 中序迭代
class Solution{
public:vector<int> inorderTraversal(TreeNode* root){stack<TreeNode*> st;vector<int> path;TreeNode* cur = root;while(cur != nullptr || !st.empty()){if(cur != nullptr){st.push(cur);cur = cur->left;  // 左}else{cur = st.top();st.pop();path.push_back(cur->val);  // 中cur = cur->right;  // 右}}return path;}
};// 后序迭代  左右中,将之前前序中左右->中右左->(反转)左右中
// class Solution {
// public:
//     vector<int> inorderTraversal(TreeNode* root) {
//         stack<TreeNode*> st;
//         vector<int> path;
//         if(root == nullptr) return path;
//         st.push(root);//         while(!st.empty()){
//             TreeNode* cur = st.top();
//             st.pop();
//             path.push_back(cur->val);  // 中
//             if(cur->left != nullptr) st.push(cur->left);  // 左
//             if(cur->right != nullptr) st.push(cur->right);  // 右
//         }
//         reverse(path.begin(), path.end());
//         return path;
//     }
// };

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

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

相关文章

一个产品需求工程师繁忙的一天

早晨&#xff1a;开启新的一天 7:00 AM - 起床 早晨七点准时起床。洗漱、早餐后&#xff0c;查看手机上的邮件和消息&#xff0c;提前了解今天的工作安排和优先事项。 8:00 AM - 前往公司 坐地铁前往公司。在地铁上&#xff0c;习惯性地阅读一些行业资讯和市场报告&#xff0…

使用SpringBoot整合Servlet

一、SpringBoot和Servlet的整合 1、用注解WebServlet配置Servlet映射 创建一个SpringBoot的web工程&#xff0c;在工程用创建一个Servlet 2、在SpringBoot的启动类上加注解ServletComponentScan 二、额外的方式 1、不使用WebServlet配置Servlet映射 创建一个SpringBoot工…

RabbitMQ延时队列(实现定时任务)

消息的TTL(Time To Live)就是消息的存活时间。 RabbitMQ可以对队列和消息分别设置TTL。 对队列设置存活时间&#xff0c;就是队列没有消费者连着的保留时间。 对每一个单独的消息单独的设置存活时间。超过了这个时间&#xff0c;我们认为这个消息就死了&#xff0c;称之为死…

代码随想录算法训练营:19/60

非科班学习算法day19 | LeetCode530:二叉搜索树的最小绝对差 &#xff0c;Leetcode501:二叉搜索树的众数 &#xff0c;Leetcode236:二叉树的最近公共祖先 目录 介绍 一、LeetCode题目 1.LeetCode530:二叉搜索树的最小绝对差 题目解析 2.Leetcode501: 二叉搜索树的众数 …

软设之加工逻辑之结构化语言

结构化语言是一种介于自然语言和形式化语言之间的半形式语言&#xff0c;是自然语言的一个受限子集 外层&#xff1a;用来描述控制结构&#xff0c;采用顺序&#xff0c;选择和重复3种基本结构 1.顺序结构&#xff1a;一组祈使语句&#xff0c;选择语句&#xff0c;重复语句的…

个人对JVM的一点理解

JVM&#xff08;Java 虚拟机&#xff09;是 Java 程序能够跨平台运行的关键。它负责将 Java 字节码转换为机器码并执行。 JVM 主要由类加载器、运行时数据区、执行引擎和本地方法接口等部分组成。运行时数据区包括方法区、堆、虚拟机栈、本地方法栈和程序计数器等。 GC&#xf…

远期利率(Forward Rate)是什么?以及远期利率在期货合约中的应用

远期利率是什么&#xff1f; 中文版 远期利率&#xff08;Forward Rate&#xff09;是指从未来某一时间段开始适用的利率。它是金融市场上的一种合约利率&#xff0c;表示在某个特定日期开始的一段时间内的预期利率。这种利率可以通过现有的即期利率&#xff08;Spot Rate&am…

6.26考试前总结

一、选择 1、运算符重载&#xff1a;&#xff08;1&#xff09;不可重载&#xff1a;. .* :: ?: sizeof &#xff08;2&#xff09;只成员函数&#xff1a;、[]、&#xff08;&#xff09;、-> ps:和[]需要加&&#xff0c;返回类&#xff0c;[]返回中括号内…

SpringBoot根据不同IP限制接口的QPS

根据对方IP地址来限制接口的QPS&#xff08;每秒查询率&#xff09;&#xff0c;你可以结合Spring Boot应用、Guava的RateLimiter或者自定义的并发控制逻辑来实现。以下是一个基于Guava RateLimiter和Spring Boot的示例&#xff0c;展示如何根据IP地址来限制接口的QPS&#xff…

镜头下的光学

说实话&#xff0c;当我看到几何光学的内容全是初中的解析几何的时候&#xff0c;我就觉得讲的方式太原始了&#xff0c;而且太过复杂也看不懂。所以我尝试做了数学建模&#xff0c;发现建模之后模型可以解释一些物理现象&#xff0c;也不会有矛盾的地方&#xff0c;那就算过得…

【Python系列】探索 Python 环境管理工具:conda 与 pip 的比较

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

简过网:专科生可以考的编制岗位有哪些?这5个铁饭碗要抓住了!

专科生可以考的编制岗位有哪些&#xff1f;以下这几种可以考的&#xff0c;尤其是应届毕业生&#xff0c;一定要抓住机会哦&#xff01; ​ 一、三支一扶&#xff1a;专科生可报考&#xff0c;期满可转编。 三支一扶&#xff1a;支农、支医生、支教、扶贫 工作时间一般为2年&…

深入探索Postman:前置与后置脚本的编写与应用

Postman是一款广受欢迎的API开发和测试工具&#xff0c;它提供了丰富的功能来简化接口测试过程。在Postman中&#xff0c;前置脚本&#xff08;Pre-request Script&#xff09;和后置脚本&#xff08;Tests Script&#xff09;是两个强大的功能&#xff0c;允许用户在发送请求之…

秋招Java后端开发冲刺——非关系型数据库篇(Redis)

一、非关系型数据库 1. 主要针对的是键值、文档以及图形类型数据存储。 2. 特点&#xff1a; 特点说明灵活的数据模型支持多种数据模型&#xff08;文档、键值、列族、图&#xff09;&#xff0c;无需预定义固定的表结构&#xff0c;能够处理各种类型的数据。高扩展性设计为水…

安全技术和防火墙(一)

安全技术和防火墙 安全技术 入侵检测系统&#xff1a;特点是不阻断网络访问&#xff0c;主要提供报警和事后监督 不主动介入 (监控) 入侵防御系统&#xff1a;透明模式工作 &#xff0c;数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞 等 进行准确的分析判断 判断为攻击行为后会…

高校心理咨询管理系统

摘 要 随着高校学生心理问题的增多&#xff0c;心理咨询服务在高校中的重要性日益凸显。然而&#xff0c;传统的心理咨询管理方式存在着诸多问题&#xff0c;如信息不透明、咨询师资源不足等。为了解决这些问题&#xff0c;本文设计并实现了一种基于Java Web的高校心理咨询管理…

model_json_schema

model_json_schema示列 from pydantic import BaseModel, Field, ValidationError, field_validatorclass User(BaseModel):id: int Field(default0, lt100, gt0)username: stremail: strfield_validator(username)def name_must_alpha(cls, v):assert v.isalpha(), name mus…

浸式冷却设计参数

每天一篇行业发展资讯&#xff0c;让大家更及时了解外面的世界。 更多资讯&#xff0c;请关注B站/公众号【莱歌数字】&#xff0c;有视频教程~~ 两相被动浸入冷却是指使用改变相的沸腾液体来去除一个或多个表面的热量的冷却系统。 然后蒸汽被移动到冷凝器&#xff0c;然后被…

LaTeX中添加矩阵分块虚线并设置虚线疏密

对于大型矩阵&#xff0c;有时需要添加分块虚线。 方法为使用arydshln宏包&#xff0c;然后在array环境中设置虚线。需要注意的是&#xff0c;使用矩阵环境需要搭配amsmath宏包使用&#xff0c;且需放在amsmath宏包之后。即导言区设置为 \usepackage{amsmath} \usepackage{ary…

日语培训日语等级考试柯桥小语种学习语言学校

什么是外来语 外来语是指在日本的国语中使用的来源于外国语言的词汇。但狭义上的外来语则是指来源于欧美国家语言的词汇&#xff0c;其中大部分是来源于英美语系的词汇。日语中的汉语词汇很多&#xff0c;大多是自古以来从中国引进的&#xff0c;从外来语的定义看&#xff0c;汉…