栈模拟递归,LeetCode 145. 二叉树的后序遍历

一、题目

1、题目描述

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

2、接口描述

/*** 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> postorderTraversal(TreeNode* root) {}
};

3、原题链接

145. 二叉树的后序遍历


二、解题报告

1、思路分析

用栈模拟递归即可,先往左走,然后往右走,往根回溯的条件为右路为空或者右路访问过

2、复杂度

时间复杂度: O(N)空间复杂度:O(N)

3、代码详解

/*** 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:
TreeNode* s[105], *last;
int t;vector<int> postorderTraversal(TreeNode* root) {vector<int> ret;last = nullptr;while(t || root){while(root)s[t++] = root, root = root -> left;if(last == s[t - 1] -> right || !s[t - 1] -> right)ret.emplace_back((last = s[--t]) -> val);else root = s[t - 1]->right;}return ret;}
};

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

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

相关文章

JVM学习记录

JVM基础概念 JVM是一个运行在计算机上的程序&#xff0c;负责编译java字节码文件&#xff0c;支持跨平台特性。 java语言为了通过实时解释实现多平台支持&#xff0c;性能相对于C等语言较低&#xff0c;而JVM提供了JIT即时编译进行性能优化。 JVM与JIT JVM负责解释和执行Ja…

3.10 Binance_interface APP U本位合约交易-市单价平仓

Binance_interface APP U本位合约交易-市单价平仓 Github地址PyTed量化交易研究院 量化交易研究群(VX) py_ted目录 Binance_interface APP U本位合约交易-市单价平仓1. APP U本位合约交易-市单价平仓函数总览2. 模型实例化3. 同步 市价平仓4. 同步 市价平仓 回调函数5. 异步…

LLaMA 入门指南

LLaMA 入门指南 LLaMA 入门指南LLaMA的简介LLaMA模型的主要结构Transformer架构多层自注意力层前馈神经网络Layer Normalization和残差连接 LLaMA模型的变体Base版本Large版本Extra-Large版本 LLaMA模型的特点大规模数据训练 LLaMA模型常用数据集介绍公共数据来源已知的数据集案…

子集型回溯和组合型回溯

目录 子集 1,选或不选 2.枚举选哪个 组合 1.选或不选 2.枚举选哪个 回溯问题有两种思考方式,一种是对于给定集合的每个元素,你是选还是不选,另一种是每个位置必须选一个数,你挑一个选就行了.但这种挑选一定是有序的挑 子集 子集 1,选或不选 class Solution { public:…

Java的接口

目录 1.接口的概念 2.语法规则 3.接口的使用 4.接口的特性 总结&#xff1a; 5.实现多个接口 6.接口间的继承 1.接口的概念 接口就是公共的行为规范标准&#xff0c;大家在实现时&#xff0c;只要符合规范标准&#xff0c;就可以通用。 在Java中&#xff0c;接口可以看成…

【for循环——讲解】

for循环 1. 介绍2. Python 中的 for 循环3. JavaScript 中的 for 循环4. Java 中的 for 循环5. C# 中的 for 循环6. C 中的 for 循环 1. 介绍 for 循环是一种常见的控制结构&#xff0c;被用于在编程中重复执行一段代码固定的次数&#xff0c;或者遍历数据结构中的每个元素。大…

C语言学习(8)—— 输入输出

文件在程序中是以流的形式来操作的&#xff1a;&#xff08;1&#xff09;输入流&#xff1a;数据从数据源(文件)到程序(内存)的路径&#xff1b;&#xff08;2&#xff09;输出流&#xff1a;数据从程序(内存)到数据源(文件)的路径 一、屏幕输入输出 1. getchar() 和 putcha…

MOMENTUM: 1

攻击机 192.168.223.128 目标机 192.168.223.146 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.146 开启了22 80端口 看一下web界面 随便打开看看 发现这里有个参数id&#xff0c;sql尝试无果&#xff0c;发现写入什么&#xff0c;网页显示…

kali 开启ssh

vi /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes 保存退出 service ssh restart ss -tunlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process tcp LISTEN …

C#,21根火柴棍问题(21 Matchticks Problem)的算法与源代码

一、21根火柴棍问题&#xff08;21 Matchticks Problem&#xff09; 21根火柴棍问题是西方经典游戏之一。 给定21根火柴&#xff0c;2个人A和B&#xff08;比如&#xff1a;分别是计算机和用户&#xff09;。 每个人一次可以挑选 1-- 4 根火柴。 被迫挑最后一根火柴的人输了…

51单片机 发送信息到电脑 com3口

51单片机 发送信息到电脑 com3口 import serial# 打开串行端口 ser serial.Serial(COM3, 9600) # 9600为波特率&#xff0c;根据实际情况进行调整 flag True try:while True:if ser.in_waiting > 0: # 如果串口有数据可读data ser.read() # 读取一行数据并解码为字符串…

第76讲安全退出实现

安全退出实现 VueX 是一个专门为 Vue.js 应用设计的状态管理构架&#xff0c;统一管理和维护各个vue组件的可变化状态(你可以理解成 vue 组件里的某些 data )。 Vuex有五个核心概念&#xff1a; state, getters, mutations, actions, modules。 state&#xff1a;vuex的基本数…

【回溯】37. 解数独

37. 解数独 解题思路 通过solveSudoku方法开始求解数独问题&#xff0c;然后调用backtrack方法进行递归回溯搜索。backtrack方法通过两个参数i和j来确定当前搜索的位置。 在backtrack方法中&#xff0c;首先检查当前位置是否超出了数独的边界&#xff0c;若超出&#xff0c;则…

【Java】内置锁是什么?

内置锁&#xff08;也称为监视器锁或互斥锁&#xff09;是Java语言提供的一种基本的线程同步机制。在Java中&#xff0c;每个对象都自动持有一个内置的锁&#xff0c;这个锁也被称为对象的监视器锁&#xff08;monitor lock&#xff09;。当你使用synchronized关键字来同步一个…

arduino uno R3驱动直流减速电机(蓝牙控制)

此篇博客用于记录使用arduino驱动直流减速电机的过程&#xff0c;仅实现简单的功能&#xff1a;PID调速、蓝牙控制 1、直流减速电机简介2、DRV8833电机驱动模块简介3、HC-05蓝牙模块简介电机转动测试4、PID控制5、蓝牙控制电机 1、直流减速电机简介 我在淘宝购买的电机&#x…

24个已知403绕过方法的利用脚本

介绍 一个简单的脚本&#xff0c;仅供自用&#xff0c;用于绕过 403 在curl的帮助下使用24个已知的403绕过方法 它还可用于比较各种条件下的响应&#xff0c;如下图所示 用法 ./bypass-403.sh https://example.com admin ./bypass-403.sh website-here path-here 安装 git …

交叉熵损失函数基本概念及公式

Cross-Entropy Loss 1.二分类2. 对于多类别分类问题&#xff0c;其公式可以表示为&#xff1a;3. 公式深度挖掘解释——交叉熵损失函数公式中&#xff08;log&#xff09;的解释总结 交叉熵损失函数&#xff08;Cross-Entropy Loss&#xff09;是在机器学习和深度学习中常用的一…

陪护系统|陪护小程序提升长者护理服务质量的关键

在如今逐渐老龄化的社会中&#xff0c;老年人对更好的护理服务需求不断增加。科技的进步使得陪护小程序系统源码成为提供优质服务的重要途径之一。本文将从运营角度探讨如何优化陪护小程序系统源码&#xff0c;提升长者护理服务的质量。 首先&#xff0c;我们需要对软件的设计和…

redis集群方案

redis集群方案有三种:主从复制、哨兵模式、redis分片集群 主从集群&#xff0c;用于解决单节点redis并发能力上限的&#xff0c;一般就是读写分离。一般一主节点负责写数据&#xff0c;多从节点负责读取数据&#xff0c;主节点写入数据之后&#xff0c;需要将数据同步到从节点…

2024年世界听力日活动的主题是什么?

改变思维模式&#xff1a;让所有人的耳和听力保健成为现实&#xff01; Let’s make ear and hearing care a reality for all! 据 世界卫生组织 报道&#xff1a;在全球范围内&#xff0c;超过 80% 的耳和听力保健需求仍未得到满足 &#xff1b; 未得到解决的听力损失每…