二叉树的遍历
| 树 | 森林 | 二叉树 |
|---|---|---|
| 先序遍历 | 先序遍历 | 先序遍历 |
| 后序遍历 | 中序遍历 | 中序遍历 |
1.前序遍历
leetcode题目链接
1.1 递归
前序遍历递归方式
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root){res.push_back(root->val);vector<int> l = preorderTraversal(root->left);res.insert(res.end(),l.begin(),l.end());vector<int> r = preorderTraversal(root->right);res.insert(res.end(),r.begin(),r.end());}return res;}
};
1.2 非递归
前序遍历迭代方式一
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;while( root || !s.empty()){if(root){res.push_back(root->val);s.push(root);root = root->left;}else{root = s.top() , s.pop();root = root->right;}}return res;}
};
前序遍历迭代方式二
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;while( root || s.size()){while(root){res.push_back(root->val);s.push(root);root = root->left;}root = s.top() , s.pop();root = root->right;}return res;}
};
2 中序遍历
leetcode题目链接
2.1 递归
中序遍历递归方式
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;if(root){vector<int> l = inorderTraversal(root->left);res.insert(res.end(),l.begin(),l.end());res.push_back(root->val);vector<int> r = inorderTraversal(root->right);res.insert(res.end(),r.begin(),r.end());}return res;}
};
非递归
中序遍历迭代方式一
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;while(root || s.size()){if( root ){s.push(root);root = root->left;}else{root = s.top() , s.pop();res.push_back(root->val);root = root->right;}}return res;}
};
中序遍历迭代方式二
class Solution {
public:vector<int> inorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;while(root || !s.empty()){while(root){s.push(root);root = root->left;}root = s.top() , s.pop();res.push_back(root->val);root = root->right;}return res;}
};
3 后序遍历
leetcode题目链接
3.1 递归
后序递归遍历方式
class Solution {
public:vector<int> postorderTraversal(TreeNode* root) {vector<int> res;if(root){vector<int> l = postorderTraversal(root->left);res.insert(res.end(),l.begin(),l.end());vector<int> r = postorderTraversal(root->right);res.insert(res.end(),r.begin(),r.end());res.push_back(root->val);}return res;}
};
3.2 非递归
后序遍历迭代方式
class Solution {
public:vector<int> postorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;TreeNode* pre = NULL;while(root || s.size()){if(root){s.push(root);root = root->left;}else{root = s.top();if(root->right && pre != root->right)root = root->right;else{s.pop();res.push_back(root->val);pre = root;root = NULL;}}}return res;}
};
相关文章:
二叉树的遍历
树森林二叉树先序遍历先序遍历先序遍历后序遍历中序遍历中序遍历 1.前序遍历 leetcode题目链接 1.1 递归 前序遍历递归方式 class Solution { public:vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root){res.push_back(root->val);ve…...
分布式限流:Redis
目录 1:如何实现分布式限流 2:限流的几种类别 2.1:固定窗口限流 2.2:滑动窗口限流 2.3:漏桶限流 2.4:令牌桶限流 3:实现分布式限流:Redis 3.1:引入Redisson的依赖包 3.2:初始化Redisson 3.3:创建Redisson的限流类 1:如何实现分布式限流 1:把统计用户的使用频率等这些…...
python excel接口自动化测试框架
前言 前些天写了pytestyamlallure接口自动化测试框架这篇文章。 今天采用Excel继续写一个接口自动化测试框架。 设计流程图 这张图是我的excel接口测试框架的一些设计思路。 首先读取excel文件,得到测试信息,然后通过封装的requests方法,…...
Java开发面试--MongoDB专区
1、你是否了解 MongoDB? 答: 是的,我了解 MongoDB。MongoDB是一个流行的NoSQL数据库,它以文档的形式存储数据,具有高度的灵活性和可扩展性。我熟悉MongoDB的基本概念和特性,例如集合(Collectio…...
当『后设学习』碰上『工程学思维』
只要我成为一个废物,就没人能够利用我! 雷猴啊,我是一只临期程序猿。打过几年工,写过几行代码。但今天我不想聊代码,我们聊聊学习这件事。 技术年年更新,尤其是前端框架,很多时候觉得学习速度都…...
一表谈现实、系统、流程、报表与BI
序号主题描述1系统与现实1.1管理系统个体应用决定因素管理能力、软件工程与管理环境的综合结果1.2信息系统与现实业务的关系现实世界是以业务利弊为抓手;信息系统是以业务流程为抓手;信息系统只是对现实业务部分的数字化应用总结:现实业务是以…...
数据结构顺序栈例题一
内容仅供个人复习 #include<iostream> #define MAXSIZE 100using namespace std;typedef struct {int *base;int *top;int stackSize;}SqStack;void Initstack( SqStack &s) // 初始化栈 {s.base new int[MAXSIZE];s.top s.base;s.stackSize MAXSIZE; }void Pus…...
大模型在百度智能问答、搜索中的应用
本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队,共同探索智能问答技术的发展方向,文末有简历投递方式。 01 什么是机器问答 机器问答,就是让计算机…...
ARPG----C++学习记录01日志和调试
多人射击有点难,发现这个更加基础,先学习这个 显示日志 可以在代码中插入这样一行来打印日志,蓝图里的printstring会在屏幕和日志里都显示。可以使用%f,d等来获取后边的输入值。对于打映字符串变量,传入需要* UE_LOG…...
3302. 表达式求值, 栈的应用
3302. 表达式求值 - AcWing题库 给定一个表达式,其中运算符仅包含 ,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。 注意: 数据保证给定的表达式合法。题目保证符号 - 只作为减号出现&…...
论文写作框架示例:论软件系统建模方法及其应用
标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…...
Godot 官方2D C#重构(4):TileMap进阶使用
文章目录 前言完成内容项目节点结构TileMap设置图片资源备选图片添加物理碰撞添加y轴遮罩判断Y Sort Enable是干什么的? 脚本代码 前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 完成内容 项目节点结构 TileMap设置 图片资源 备选图…...
Ubuntu系统编译调试QGIS源码保姆级教程
在之前的文章中,我详细介绍了怎么在Windows下编译QGIS源码,也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式,想要分析源码,“断点调试”肯定是少不了的,但是这两种模式虽然也…...
电源控制系统架构(PCSA)之系统控制处理器
安全之安全(security)博客目录导读 目录 一、系统控制处理器 1、服务 2、可信操作 一、系统控制处理器 SCP是一种基于处理器的能力,为提供电源管理功能和服务提供了一个灵活和可扩展的平台。 在移动系统中,SCP处理器一般是Cortex-M微控制器ÿ…...
深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
加我微信hezkz17进数字音频系统研究开发交流答疑群(课题组) 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署 项目一 科大讯飞经验 在Matlab平台上实现广义…...
Redis实现方式开启新篇章,解决分布式环境下的资源竞争问题,提升系统稳定性
前言 分布式锁一般有三种实现方式: 数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁 本篇博客将介绍第二种方式,基于Redis实现分布式锁。 虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实…...
Go命令行参数操作:os.Args、flag包
Go命令行参数操作:os.Args、flag包 最近在写项目时,需要用到命令行传入的参数,正好借此机会整理一下。 1 os.Args:程序运行时,携带的参数(包含exe本身) package mainimport ("fmt"&q…...
在Go中处理时间数据
获取时间 这可能是软件包中最常用的方法。我们如何知道当前的时间呢?像这样: t : time.Now() fmt.Println(t)ini复制代码2023-04-16 23:54:45.924965 0800 CST m0.000152293这就是当前的时间。这是很麻烦的,所以我将把它分解成几个部分。 …...
SOLIDWORKS PDM 2024数据管理5大新功能
1. 改进的视觉内容 • 通过装配体可视化功能,在 SOLIDWORKS 中以图形方式查看零部件数据,如工作流程状态。• 使用特定图标迅速识别焊件切割清单零部件。 优点:重要数据和系统信息一目了然。 2.增强的数据保护和跟踪功能 •保护“包含”和…...
5G与医疗:开启医疗技术的新篇章
5G与医疗:开启医疗技术的新篇章 随着5G技术的快速发展和普及,它已经在医疗领域产生了深远的影响。5G技术为医疗行业提供了更高效、更准确、更及时的通信方式,从而改变了医疗服务的模式和患者的体验。本文将探讨5G技术在医疗领域的应用场景、优…...
为什么这款文档转换工具能同时实现高效与精准?揭秘Marker的核心优势
为什么这款文档转换工具能同时实现高效与精准?揭秘Marker的核心优势 【免费下载链接】marker Convert PDF to markdown JSON quickly with high accuracy 项目地址: https://gitcode.com/GitHub_Trending/ma/marker 在当今信息爆炸的时代,处理PD…...
YOLOv11养殖场羊群目标检测数据集-66张-sheep-1_3
YOLOv11养殖场羊群目标检测数据集 📊 数据集基本信息 目标类别: [‘sheep-1’, ‘sheep-10’, ‘sheep-11’, ‘sheep-2’, ‘sheep-3’, ‘sheep-4’, ‘sheep-5’, ‘sheep-6’, ‘sheep-7’, ‘sheep-8’, ‘sheep-9’]中文类别:[‘羊-1’…...
Unity中DragonBones多动画性能优化:图集复用与骨骼模板化
1. 为什么DragonBones动画在Unity里总“卡得莫名其妙”?我第一次在Unity项目里接入DragonBones时,美术给的是一套角色的12个独立动画:idle、walk、run、jump、attack1、attack2、hurt、die、victory、taunt、cast、reload——每个都带完整骨骼…...
知识竞赛实时排名:平分怎么处理?
知识竞赛实时排名算法:平分怎么处理?公平 精准 高效 让每一分都经得起推敲🎯 一、平分问题的核心挑战在知识竞赛中,当多位选手或队伍总分相同时,如何公平、高效地确定实时排名,是组织者面临的关键技术难…...
【大模型12步学习路线 · 第12步 · ①原理篇】多模态 LLM + Multimodal RAG 全景:从 Qwen3-VL 到 ColPali / ColQwen2.5,让 LLM看懂Spec
【大模型12步学习路线 第12步 ①原理篇】多模态 LLM + Multimodal RAG 全景:从 Qwen3-VL 到 ColPali / ColQwen2.5,让 LLM"看懂"Spec 时序图 系列定位:「大模型正确学习顺序」12 步系列 第 12 步 多模态 的 ①原理篇 —— 最后一步,Veri-Copilot v1.0 大结局。 前…...
文档分析准确率从61%跃升至98.7%的关键转折点(附2024Q2最新Claude-3.5 Sonnet文档理解基准测试对比表)
更多请点击: https://kaifayun.com 第一章:文档分析准确率跃升至98.7%的里程碑意义 当文档智能系统在真实业务场景中将结构化识别准确率稳定提升至98.7%,这不仅是一个数字的突破,更是文档理解能力从“可用”迈向“可信”的关键分…...
量子转导技术:微波与光学量子系统的桥梁
1. 量子转导技术概述量子转导技术是连接微波与光学量子系统的关键桥梁,其核心功能是实现不同频段量子信息的高保真转换。作为一名长期从事量子器件研发的工程师,我见证了这项技术从实验室走向实际应用的完整历程。简单来说,它就像量子世界的&…...
Cadence 17.4 CIS配置踩坑实录:MySQL元件数据库连接失败与中文乱码全解决
Cadence 17.4 CIS配置实战:MySQL元件数据库连接与中文乱码终极解决方案 当工程师尝试将Cadence CIS与MySQL数据库集成时,往往会遇到两个令人头疼的问题:连接失败和中文乱码。这两个问题看似简单,却可能耗费大量调试时间。本文将深…...
OpCore-Simplify:10分钟搞定黑苹果配置,告别3天手动调试的智能神器
OpCore-Simplify:10分钟搞定黑苹果配置,告别3天手动调试的智能神器 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂…...
AI设计泳装,能颠覆今夏潮流?
AI设计泳装,能颠覆今夏潮流? 夏日临近,泳装市场硝烟再起。然而,海量款式与消费者挑剔审美的矛盾日益尖锐——设计周期长、打版成本高、爆款命中率低,让无数商家深陷库存泥潭。如何破局?北京先智先行科技有限…...
