【题解】二叉树的前中后遍历
文章目录
- 二叉树的前序遍历
- 二叉树的中序遍历
- 二叉树的后序遍历
二叉树的前序遍历
题目链接:二叉树的前序遍历
解题思路1:递归
代码如下:
void preorder(vector<int>& res, TreeNode* root){if(root == nullptr) return;//遇到空节点就返回res.push_back(root->val);//先遍历根节点preorder(res, root->left);//再遍历左子树preorder(res, root->right);//最后遍历右子树}vector<int> preorderTraversal(TreeNode* root) {vector<int> res;preorder(res, root);return res;}
解题思路2:辅助栈
代码如下:
vector<int> preorderTraversal(TreeNode* root) {vector<int> res;if(root == nullptr) return res;stack<TreeNode*> s;s.push(root);while(!s.empty()){TreeNode* cur = s.top();res.push_back(cur->val);s.pop();if(cur->right) s.push(cur->right);if(cur->left) s.push(cur->left);}return res;}
二叉树的中序遍历
题目链接:二叉树的中序遍历
解题思路1:递归
代码如下:
void inorder(vector<int>& res, TreeNode* root){if(root == nullptr) return;inorder(res, root->left);res.push_back(root->val);inorder(res, root->right);}vector<int> inorderTraversal(TreeNode* root) {vector<int> res;inorder(res, root);return res;}
解题思路2:辅助栈
代码如下:
vector<int> inorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;while(root!=nullptr || !s.empty()){//每次找到最左节点while(root != nullptr){s.push(root);root = root->left;}//访问该节点TreeNode* cur = s.top();res.push_back(cur->val);s.pop();//进入右节点root = cur->right;}return res;}
二叉树的后序遍历
题目链接:二叉树的后序遍历
解题思路1:递归
代码如下:
void postorder(vector<int>& res, TreeNode* root) {if (root == nullptr) return;postorder(res, root->left);postorder(res, root->right);res.push_back(root->val);}vector<int> postorderTraversal(TreeNode* root) {vector<int> res;postorder(res, root);return res;}
解题思路2:辅助栈
代码如下:
vector<int> postorderTraversal(TreeNode* root) {vector<int> res;stack<TreeNode*> s;TreeNode* pre = nullptr;while(root!=nullptr || !s.empty()){//找到最左边的节点while(root != nullptr){s.push(root);root = root->left;}TreeNode* cur = s.top();s.pop();if(cur->right==nullptr || cur->right == pre){res.push_back(cur->val);pre = cur;}else{s.push(cur);root = cur->right;}}return res;}
相关文章:
【题解】二叉树的前中后遍历
文章目录 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 二叉树的前序遍历 题目链接:二叉树的前序遍历 解题思路1:递归 代码如下: void preorder(vector<int>& res, TreeNode* root){if(root nullptr) return;//遇到空节点…...

文件操作/IO
文件 文件是一种在硬盘上存储数据的方式,操作系统帮我们把硬盘的一些细节都封装起来了,程序员只需要了解文件相关的接口即可,相当于操作文件就是间接的操作硬盘了 硬盘用来存储数据,和内存相比硬盘的存储空间更大,访问…...

基于Java+SpringBoot+vue前后端分离共享汽车管理系统设计实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...

Mac RN环境搭建
RN ios android原生环境搭建有时候是真恶心,电脑环境不一样配置也有差异。 我已经安装官网的文档配置了ios环境 执行 npx react-nativelatest init AwesomeProject 报错 然后自己百度查呀执行 gem update --system 说是没有权限,执行失败。因为Mac…...
log4j教程_编程入门自学教程_菜鸟教程-免费教程分享
教程简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;…...

DP——背包问题
DP——背包问题 01背包问题分数背包问题多重背包问题完全背包问题 当我们谈论背包问题时,可以想象成一个小朋友要去旅行,但是他只能带一个容量有限的背包。他有一些物品可以选择放入背包,每个物品都有自己的重量和价值。小朋友的目标是在不超…...

【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法
文章目录 函数参数详解一、缺省参数二、不定长参数三、缺省参数在*args后面可变、不可变类型总结 进阶案例 函数参数详解 一、缺省参数 调用函数时,缺省参数的值如果没有传入,则取默认值。 下例会打印默认的age,如果age没有被传入…...

10个经典战略分析模型,助力洞察市场明确优势
在企业的经营管理过程中,要时刻清晰内外部环境和自身的优劣势,做好企业略规划,进行企业内外部资源的分析,对经营环境,企业核心竞争力有足够的判断,才能明确企业的发展方向。本文为大家分享10个常用的战略分…...

C++(Qt)软件调试---将调试工具安装到AeDebug(11)
C(Qt)软件调试—将调试工具安装到AeDebug(11) 文章目录 C(Qt)软件调试---将调试工具安装到AeDebug(11)1、前言1.1 使用的调试工具 2、调试器安装1.1 WinDbg1.2 procdump1.3 DrMinGW1.4 vsjitdebugger 更多精彩内容👉个…...

浅谈限流式保护器在住宅电气防火的应用
安科瑞 华楠 【摘要】随着人民生活水平的提高,家用大功率电器普遍被使用,导致用电量剧增,电气火灾频发。文章分析了电气火灾发生的原因,并时电气火灾的防范措施进行了探讨。 【关键词】电气火灾;原因;防范…...
ChatGPT助力ModStartBlog,博客写作更智能
ModStartBlog v7.1.0,ChatGPT 支持、界面全新优化 在数字化时代,博客已经成为人们分享知识、表达观点和建立个人品牌的重要工具。ModStartBlog是一款流行的博客平台,其最新的版本v7.1.0不仅增加了ChatGPT支持,还对界面进行了全新…...

Jpa与Druid线程池及Spring Boot整合(二): spring-boot-starter-data-jpa 踏坑异常处理方案
Jpa与Druid线程池及Spring Boot整合(一) Jpa与Druid线程池及Spring Boot整合(二):几个坑 附录官网文档:core.domain-events域事件 从聚合根发布事件 存储库管理的实体是聚合根。在领域驱动设计应用程序中,这些聚合根通常会发布领域事件。Sp…...

Vue3组件库
Vue组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目(yarn) D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…...
AUTOSAR从入门到精通-【应用篇】基于 CAN/LIN 总线的智能配电监控系统的研究设计
目录 前言 国内外研究现状 CAN 总线和 LIN 总线技术 2.1CAN 总线技术 2.1.1 通信模型...

数据安全服务能力评定资格证书-申请流程
数据安全服务能力评定(以下简称能力评定)是指对数据安全服务提供商从事数据安全服务综合能力的评定,包括技术能力、服务能力、质量保证能力、人员构成与素质、经营业绩、资产状况等要素。 用于对中华人民共和国境内的数据安全服务提供商提供…...

用js快速生成一个简单的css原子库 例如: .mr-18 .pl-18
第三方css原子库的缺点 比如 tailwindcss,有学习成本最开始写的时候效率可能还没有我们自己手写效率高,需要配置,会有原始样式被覆盖的问题;总之就是一个字重 自己搓的优点 学习成本低灵活不会有副作用 <!DOCTYPE html>…...

Java鹰眼轨迹服务 轻骑小程序 运动健康与社交案例
Java地图专题课 基本API BMapGLLib 地图找房案例 MongoDB 百度地图鹰眼轨迹服务 鹰眼轨迹服务概述 鹰眼是一套轨迹管理服务,提供各端SDK和API供开发者便捷接入,追踪所管理的车辆/人员等运动物体。 基于鹰眼提供的接口和云端服务,开发者可以迅…...
【产品经理】微信小程序隐私保护指引
为了分辨用户,开发者将在获取你的明示同意后,收集你的微信昵称、头像。 为了显示距离,开发者将在获取你的明示同意后,收集你的位置信息。 开发者收集你的地址,用于获取位置信息。 开发者收集你的发票信息࿰…...
springboot创建websocket服务端
springboot创建websocket服务端 1.配置类 package com.neusoft.airport.websocket;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndp…...

网络安全攻防实战:探索互联网发展史
大家好,我是沐尘而生。 互联网发展史:数字世界的壮阔画卷 从早期的ARPANET到今天的万物互联,互联网经历了漫长的发展过程。然而,随着技术的进步,网络安全问题也随之而来。我们不仅要探索互联网的壮阔历程,…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...