二叉树的非递归遍历(c++)

前序

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-preorder-traversal/description/

1---2---4---5---3---6---7

思想:

中左右

1.先访问左路结点

2.左路结点入栈

3.取栈中结点访问其右子树。

代码:

vector<int> preorderTraversal(TreeNode* root) {//访问一棵树分成两个部分//1.访问左路结点,左路节点入栈//2.取栈中的结点访问其右子树vector<int> v;stack<TreeNode*> st;TreeNode* cur = root;while (cur || !st.empty())//cur||!st.empty(){while (cur){v.push_back(cur->val);//访问左路结点st.push(cur);//左路节点入栈cur = cur->left;}TreeNode* Top = st.top();//取栈中的结点访问其右子树st.pop();cur = Top->right;}return v;
}

中序

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/implement-stack-using-queues/

4---2---5---1---6---3---7

左中右

1.将左路结点全部入栈

2.先访问栈顶节点

3.访问栈顶结点的右子树。

vector<int> inorderTraversal(TreeNode* root)
{vector<int> v;stack<TreeNode*> st;TreeNode* cur = root;while (cur || !st.empty()){while (cur){st.push(cur);cur = cur->left;}TreeNode* Top = st.top();v.push_back(Top->val);st.pop();cur = Top->right;}return v;
}

后序

4---5---2---6---7---3---1

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-postorder-traversal/description/

中左右---中右左---左右中

左右中

1.先访问右路结点

2.右路结点入栈

3.取栈中结点访问其左子树

4.最后将数组反转即可

vector<int> postorderTraversal(TreeNode* root)
{vector<int> v;stack<TreeNode*> st;TreeNode* cur = root;while (cur || !st.empty())//cur||!st.empty(){while (cur){v.push_back(cur->val);//访问右路结点st.push(cur);//右路节点入栈cur = cur->right;}TreeNode* Top = st.top();//取栈中的结点访问其左子树st.pop();cur = Top->left;}reverse(v.begin(),v.end());return v;
}

 

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

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

相关文章

GEE数据集——高分辨率全球树冠高度地图(1 米)Meta 公司

高分辨率 1 米全球树冠高度地图 简介 全球树冠高度地图数据集提供了对全球树冠高度的全面了解,有助于对森林生态系统、碳固存和气候变化减缓工作进行精确监测。该数据集由 Meta 和世界资源研究所合作开发,是了解森林结构和动态的基石。通过融合最先进的卫星图像和先进的人工…

Go实现树莓派读取at24c02 eeprom读写数据

步骤 启用i2c 参考 Go实现树莓派读取bh1750光照强度 代码 package mainimport ("fmt""periph.io/x/conn/v3/i2c" )type AT24C02Device struct {dev *i2c.Dev }func NewAT24C02Device(addr uint16, bus i2c.BusCloser) (*AT24C02Device, error) {var (d…

千亿美元《人工智能》超级计算机!

微软与OpenAI的合作将引领人工智能领域的巨大飞跃。他们共同打造的百亿美元人工智能超级计算机项目将推动技术的边界&#xff0c;为未来科技发展开辟全新的可能性。这一合作不仅体现了科技巨头之间的紧密合作&#xff0c;也展现了人工智能在全球范围内的战略重要性。 微软和 O…

截图文字怎么识别?这里有三种识别方法

截图文字怎么识别&#xff1f;在数字化时代&#xff0c;信息的快速处理和转换成为了提高工作效率的关键。截图文字识别技术&#xff0c;作为连接视觉信息与数字文本的桥梁&#xff0c;极大地便利了我们的工作和生活。它允许用户从图像中提取文字内容&#xff0c;进而编辑、搜索…

luceda ipkiss教程 71:统计线路中器件的个数

**案例分享&#xff1a;**统计线路中某一器件的个数 如&#xff0c;统计SplitterTree中mmi的个数&#xff1a; 所有代码如下&#xff1a; # Copyright (C) 2020 Luceda Photonicsfrom si_fab import all as pdk from ipkiss3 import all as i3class GeneralizedSplitterTree…

第一步->手撕spring源码之Bean容器创建

什么是bean容器 可以存放数据的具体数据结构实现&#xff0c;都可以称之为容器。例如&#xff1a;ArrayList、LinkedList、HashSet等。bean就是对象的定义 spring中bean的多样性需要区分就需要用到键值索引的场景 故选择 HashMap。 什么是hashMap&#xff1f; HashMap 是一种基…

【工具】精通Chrome浏览器:Windows和Mac的快捷键指南

爱你我已不再是幼稚的少年 你离开以后我如此的可怜 让风告诉你我对你的思念 让阳光替我护你的周全 那个女孩为你哭红了双眼 那个女孩为你付出了华年 那个女孩为你错了一遍又一遍 那个女孩已经走的很远很远 也许诗人也不曾去过海边 也许孤独的人也会走出房间 也许我们从来都不曾…

百度发布文心一言:创新背景、重要意义与潜在影响

背景 百度作为中国最大的搜索引擎之一&#xff0c;一直积极探索人工智能技术的应用&#xff0c;以提升用户体验和服务质量。近年来&#xff0c;随着人工智能技术的不断发展&#xff0c;自然语言处理技术也逐渐成熟&#xff0c;使得语言生成模型得以应用于各种场景。文心一言的发…

Java入门基础学习笔记15——强制类型转换

大范围类型的变量是否可以赋值给小范围类型的变量呢&#xff1f; IDEA直接报错。直接报错&#xff0c;是提醒你有问题。但是我非常进行类型转换。 非要强行赋值呢&#xff1f; 强制类型转换&#xff0c;强行将类型范围大的变量&#xff0c;数据赋值给类型范围小的变量。 数据…

探索Draw.io:打造高效团队合作的绘图利器

探索Draw.io&#xff1a;打造高效团队合作的绘图利器 当提到在线绘图工具时&#xff0c;Draw.io&#xff08;现在更名为diagrams.net&#xff09;常常被提及。它是一个强大且灵活的工具&#xff0c;可以帮助用户创建各种类型的图表、流程图、架构图、思维导图等。在本文中&…

HTML:元素属性详解及代码示例

引言 HTML&#xff08;HyperText Markup Language&#xff09;是构建网页和网页应用的基石。通过使用各种元素和属性&#xff0c;我们可以创建结构化、样式化并具有交互性的内容。本文将深入探讨HTML元素的属性&#xff0c;并提供实用的代码示例。 HTML元素属性概述 HTML元素…

雷森托尔环保科技有限公司见证2024杭州数字供应链装备展潮流

参展企业介绍 青岛雷森托尔环保科技有限公司创建于2018年&#xff0c;位于山东青岛&#xff0c;现注册资本3000万。公司主营生产模压木托盘、化工木托盘、大型设备木包装、出口木托盘、酒柜木酒架等&#xff0c;公司拥有技术人员6人&#xff0c;均为包装设计专业毕业&#xff0…

营业执照OCR识别接口如何对接

营业执照OCR识别接口也叫营业执照文字识别OCR接口&#xff0c;指的是传入营业执照图片&#xff0c;精准识别静态营业执照图像上的文字信息。那么营业执照OCR识别接口如何对接呢&#xff1f; 首先我们找到一家有做营业执照OCR识别接口的服务商&#xff0c;数脉API,然后注册账户…

人脸识别之bbox【det_10g】-ncnn(c++)

模型描述 det_10g是insightface 人脸框图和人脸关键点的分类&#xff0c;最终能够得到人脸框图bbox&#xff0c;分值还有人脸五官&#xff08;眼x2、鼻子x1、嘴巴x2&#xff09; 由于我这里没有采用最终结果&#xff0c;通过onnx转换为ncnn&#xff0c;所以后面的步骤结果丢弃…

C语言(指针)4

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

网络安全与IP地址的关联

网络安全与IP地址之间存在着密不可分的关系。IP地址作为网络通信的基础&#xff0c;对于网络安全的保障具有至关重要的作用。以下将详细探讨网络安全与IP地址之间的关联&#xff0c;以及IP地址在网络安全中的应用。 一、IP地址与网络安全的关系 IP地址是网络通信的基础&#x…

2024年人工智能数据报告

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

常用Linux命令详细总结

一、文档编辑、过滤、查看命令 1、cp 复制文件和目录 -a 复制文件并保持文件属性 -d 若源文件为链接文件&#xff0c;则复制链接文件属性而非文件本身 -i 覆盖文件前提示&#xff0c;如果不要提示&#xff0c;在命令前加上\ -r 递归复制&#xff0c;通常用于目录的复制 …

Java NIOAIO

多路复用概念介绍 多路复用是一个在计算机网络、操作系统&#xff0c;以及软件开发中广泛使用的技术&#xff0c;它允许单一的资源&#xff08;如网络连接或者CPU&#xff09;同时服务于多个请求或多个应用程序。在I/O操作&#xff08;输入/输出操作&#xff09;的上下文中&am…

什么是IP跳变?

IP 跳跃&#xff08;也称为 IP 跳动&#xff09;的概念已引起使用代理访问网站的用户的极大关注。但 IP 跳跃到底是什么&#xff1f;为什么它对于各种在线活动至关重要&#xff1f; 在本文中&#xff0c;我们将深入探讨 IP 跳跃的世界&#xff0c;探索其实际应用、用例、潜在问…