当前位置: 首页 > news >正文

leetcode590 N叉树的后序遍历

  • 前序遍历 的顺序是:根 → 子节点1 → 子节点2 → ... → 子节点N

  • 后序遍历 的顺序是:子节点1 → 子节点2 → ... → 子节点N → 根

首先一个办法就是前序遍历结果进行翻转

在 迭代法 实现 后序遍历 时,如果采用 前序遍历 + 反转 的方式,经过栈,是反转再反转,我们需要 从右到左 遍历子节点,而 递归法 如果采用 前序遍历 + 反转 的方式,遍历子节点没有又经过栈,从左到右遍历即可。

迭代:

// 子节点从左到右入栈(保证前序顺序)
class Solution {
public:vector<int> postorder(Node* root) {vector<int> res;if(root == NULL) return res;stack<Node*> st;st.push(root);while(!st.empty()){Node* cur = st.top();st.pop();res.push_back(cur->val);for(int i = 0; i < cur->children.size(); i++){st.push(cur->children[i]);}}reverse(res.begin(), res.end());return res;}
};

递归:

class Solution {
private:void traverse(Node* cur, vector<int>& res){if(!cur) return;res.push_back(cur->val);// 子节点从右到左遍历(保证 reverse 后顺序正确)for(int i = cur->children.size() - 1; i >= 0; i--){traverse(cur->children[i], res);}}
public:vector<int> postorder(Node* root) {vector<int> res;traverse(root, res);reverse(res.begin(), res.end());return res;}
};

直接后序遍历(递归)

正确逻辑:先递归所有子节点,再访问根节点。

class Solution {
private:void traverse(Node* cur, vector<int>& res){if(!cur) return;for(Node* child: cur->children){traverse(child, res);}res.push_back(cur->val);}
public:vector<int> postorder(Node* root) {vector<int> res;traverse(root, res);return res;}
};
  1. 递归的栈机制

    • 每次递归调用 traverse(child) 时,当前函数的执行状态(如 node 和循环位置)会被压入调用栈。

    • 当子节点的递归全部完成后,才会回到父节点执行 res.push_back(node->val)

  2. 子节点的处理顺序

    • 如果子节点按 从左到右 递归,则后序结果是 [左→右→根]

    • 如果子节点按 从右到左 递归,则后序结果是 [右→左→根](但仍然符合后序定义,只是子节点顺序不同)。

相关文章:

leetcode590 N叉树的后序遍历

前序遍历 的顺序是&#xff1a;根 → 子节点1 → 子节点2 → ... → 子节点N 后序遍历 的顺序是&#xff1a;子节点1 → 子节点2 → ... → 子节点N → 根 首先一个办法就是前序遍历结果进行翻转 在 迭代法 实现 后序遍历 时&#xff0c;如果采用 前序遍历 反转 的方式&…...

docker desktop 的安装和使用

一、Docker Desktop 是什么&#xff1f; Docker Desktop 是一款专为开发者设计的工具&#xff0c;可以在本地计算机&#xff08;Windows/macOS&#xff09;上快速运行和管理容器&#xff08;Container&#xff09;环境。以下是核心功能&#xff1a; 核心特点说明容器化开发基于…...

QCustomPlot频谱图

使用QCutomPlot做的读取txt文件显示频谱图的demo,帮助大家了解QCustomPlot的基本使用 1.运行结果 demo比较简单,用于文件读取,鼠标放大缩小,右键截图等基础功能. 2.绘图详解 绘图核心是将类提升为QCustomPlot之后进行重绘,重绘之前设计图表曲线,图标标题,坐标轴,坐标轴范围,背…...

Python 和 JavaScript两种语言的相似部分-由DeepSeek产生

Python 和 JavaScript 作为两种流行的编程语言&#xff0c;虽然在设计目标和应用场景上有差异&#xff08;Python 偏向后端和脚本&#xff0c;JavaScript 偏向前端和动态交互&#xff09;&#xff0c;但它们的语法存在许多相似之处。以下是两者在语法上的主要共同点及对比&…...

记一次 .NET某云HIS系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 年前有位朋友找到我&#xff0c;说他们的系统会偶发性的CPU爆高&#xff0c;有时候是爆高几十秒&#xff0c;有时候高达一分多钟&#xff0c;自己有一点分析基础&#xff0c;但还是没找到原因&#xff0c;让我帮忙看下怎么回事&#xff1f; 二&…...

ESP32开发入门:基于VSCode+PlatformIO环境搭建指南

前言 ESP32作为一款功能强大的物联网开发芯片&#xff0c;结合PlatformIO这一现代化嵌入式开发平台&#xff0c;可以大幅提升开发效率。本文将详细介绍如何在VSCode中搭建ESP32开发环境&#xff0c;并分享实用开发技巧。 一、环境安装&#xff08;Windows/macOS/Linux&#xf…...

在 macOS 上设置来电自启动

在 macOS 中&#xff0c;系统本身并不支持直接通过“接上电源适配器”自动开机&#xff08;此功能涉及硬件底层控制&#xff09;。但针对 Intel 处理器的 Mac 机型&#xff0c;可以通过以下方法间接实现类似效果。对于 Apple Silicon&#xff08;M1/M2/M3&#xff09;芯片的 Ma…...

【技术】Ruby 生态概念速查表,通过对比nodejs生态(入门)

以下是 Ruby 生态 对应概念的速查表&#xff0c;并使用与 Node.js 生态 对比的方式来参照&#xff0c;涵盖名称、作用&#xff08;或解释&#xff09;、简单用法、可能的替代方案&#xff0c;以及 Node.js 中最相似或可类比的工具&#xff08;如果有的话&#xff09;。有些工具…...

入门级宏基因组数据分析教程,从实验到分析与应用

宏基因组学彻底改变了研究人员对微生物群落的认识&#xff0c;微生物组不仅是环境组分&#xff0c;更作为共生体深刻影响着宿主的健康与功能。 鉴于微生物群落固有的复杂性及其所处环境的多样性&#xff0c;研究者进行一些宏基因组学研究时必须精心设计以获取能真实反映目标群体…...

解决 Vue 中 input 输入框被赋值后,无法再修改和编辑的问题

目录 需求&#xff1a; 出现 BUG&#xff1a; Bug 代码复现 解决问题&#xff1a; 解决方法1&#xff1a; 解决方法2 关于 $set() 的补充&#xff1a; 需求&#xff1a; 前段时间&#xff0c;接到了一个需求&#xff1a;在选择框中选中某个下拉菜单时&#xff0c;对应的…...

聚划算!CNN-GRU、CNN、GRU三模型多变量回归预测

聚划算&#xff01;CNN-GRU、CNN、GRU三模型多变量回归预测 目录 聚划算&#xff01;CNN-GRU、CNN、GRU三模型多变量回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 聚划算&#xff01;CNN-GRU、CNN、GRU三模型多变量回归预测 (Matlab2023b 多输入单输出) 1.程…...

list的常见接口使用

今天&#xff0c;我们来讲解一下C关于STL标准库中的一个容器list的常见接口。 在我们之前c语言数据结构中&#xff0c;我们已经了解过了关于链表的知识点了&#xff0c;那么对于现在理解它也是相对来说比较容易的了。 数据结构--双向循环链表-CSDN博客 1. 定义与包含头文件 …...

5. 蓝桥公园

题目描述 小明喜欢观景&#xff0c;于是今天他来到了蓝桥公园。 已知公园有 N 个景点&#xff0c;景点和景点之间一共有 M 条道路。小明有 Q 个观景计划&#xff0c;每个计划包含一个起点 stst 和一个终点 eded&#xff0c;表示他想从 stst 去到 eded。但是小明的体力有限&am…...

零基础开始学习鸿蒙开发-智能家居APP离线版介绍

目录 1.我的小屋 2.查找设备 3.个人主页 前言 好久不发博文了&#xff0c;最近都忙于面试&#xff0c;忙于找工作&#xff0c;这段时间终于找到工作了。我对鸿蒙开发的激情依然没有减退&#xff0c;前几天做了一个鸿蒙的APP&#xff0c;现在给大家分享一下&#xff01; 具体…...

你的 Linux 服务器连不上网?10 分钟入门网络故障排查

问题现象&#xff1a;服务器突然失去网络连接 当你兴冲冲地打开终端&#xff0c;准备开始一天的开发工作时&#xff0c;却发现服务器无法连接网络&#xff0c;ifconfig命令只能看到本地环回接口(lo)。这种突如其来的网络中断可能会让很多Linux新手感到手足无措。 别担心&…...

《Vue Router实战教程》20.路由懒加载

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 路由懒加载 当打包构建应用时&#xff0c;JavaScript 包会变得非常大&#xff0c;影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块&#xff0c;然后当路由被访问的时候才加载对应组件&am…...

JVM 之 String 引用机制解析:常量池、堆内存与 intern 方法

案例一&#xff1a; String s1 new String("1"); String s2 "1"; System.out.println(s1 s2);s1: 执行 new String("1")&#xff0c;JVM 首先在字符串常量池中查找或添加字面量 "1"&#xff0c;然后在堆内存中新建一个内容为 &quo…...

如何在 Mac 上安装 Python

所有最新的 MacOS&#xff08;从 macOS 12.3 开始&#xff09;都预装了 Python 版本&#xff08;通常是 Python 2.x&#xff09;&#xff0c;但它已经过时并且不再受支持。要充分利用 Python 的功能&#xff0c;您需要安装最新版本的 Python。 本文提供了分步教程&#xff0c;展…...

无锡东亭无人机培训机构电话

无锡东亭无人机培训机构电话&#xff0c;随着科技的迅猛发展&#xff0c;无人机逐渐走入我们的生活和工作领域&#xff0c;成为多种行业中不可或缺的工具。而在其广泛的应用中&#xff0c;如何正确、熟练地操控无人机成为了关键。因此&#xff0c;找到一家专业的无人机培训机构…...

WPS复制粘贴错误 ,文件未找到 mathpage.wll

文章目录 1.错误提示图片2.解决方案1.找到MathType.wll文件和MathType Commands 2016.dotm文件并复制2.找到wps安装地址并拷贝上述两个文件到指定目录 3.重启WPS 1.错误提示图片 2.解决方案 1.找到MathType.wll文件和MathType Commands 2016.dotm文件并复制 MathType.wll地址如…...

蓝桥杯单片机刷题——按键设置当前采集距离为距离参数

设计要求 驱动超声波传感器&#xff0c;启动距离测量功能,并将其结果显示到数码管上。 按键“S5”定义为参数按键&#xff0c;按下S5按键&#xff0c;设备自动将当前采集的距离数据作为距离参数&#xff1b; 若测量的距离数据超过距离参数&#xff0c;指示灯L1点亮&#xff…...

mybaties plus 更新null值进入数据库

&#xff08;数据库一定要支持字段为null值&#xff09; 问题&#xff1a; 假设我现在数据库里有一个值是1&#xff0c;这个字段允许为null。 目前我使用的是的mybaties plus&#xff0c;我希望将这个值更新weinull&#xff0c;如何操作&#xff1f; 提示&#xff1a;如果直接…...

VSCode优雅的使用debug

原始用法&#xff1a;(这里不使用) 配置launch.json&#xff0c;里面传入参数然后debug&#xff0c;这里我们通常需要传入的参数比较多&#xff0c;而且经常修改参数&#xff0c;直接去修改launch.json会比较麻烦&#xff0c;所以使用sh脚本比较方便。 {// Use IntelliSense to…...

优化你的 REST Assured 测试:设置默认主机与端口、GET 请求与断言

REST Assured 是一个功能强大的 Java 库&#xff0c;用于测试 RESTful Web 服务。它简化了 API 测试流程&#xff0c;提供了一整套用于高效验证响应的工具。在本篇博客中&#xff0c;我们将深入探讨几个核心概念&#xff0c;包括如何设置默认主机和端口、如何发起 GET 请求以及…...

JVM之String创建、拼接

一、字符串创建的两种方式 1. 字面量直接赋值 String s1 "a"; 过程&#xff1a; JVM 检查字符串常量池中是否存在 "a"。若存在&#xff0c;直接返回常量池中的引用。若不存在&#xff0c;在常量池中创建 "a"&#xff0c;返回其引用。 特点&a…...

UE5 模仿生存建造类游戏创建的过程

一、大概流程如下 点击界面按钮生成Actor->移动鼠标Actor的位置随着鼠标移动移动->点击鼠标左键确定Actor的位置 使用了盒体检测GetWorld()->SweepSingleByChannel()函数检测是否发生碰撞通过 FCollisionQueryParams CollisionParams;CollisionParams.AddIgnoredAc…...

大模型在慢性髓细胞白血病(CML)初治成人患者诊疗中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 国内外研究现状 1.3 研究目的与内容 二、大模型技术与 CML 相关知识 2.1 大模型技术原理与特点 2.2 CML 的病理生理与诊疗现状 三、术前风险预测与手术方案制定 3.1 术前数据收集与预处理 3.2 大模型预测术前风险 3.3 根据预测…...

汽车性能的幕后保障:慧通测控电动尾翼综合力学测试浅析

在汽车性能不断追求极致的当下&#xff0c;电动尾翼已成为众多高性能车型以及部分新能源汽车提升空气动力学表现与操控稳定性的关键配置。从炫酷的超跑到注重续航与驾驶体验的新能源车&#xff0c;电动尾翼正逐渐崭露头角。它绝非仅仅是外观上的装饰&#xff0c;而是能在车辆行…...

动力电池自动点焊机:新能源汽车制造的智能焊接利器

在新能源汽车产业蓬勃发展的今天&#xff0c;动力电池作为其核心部件&#xff0c;其性能与安全性直接关系到整车的续航里程和使用寿命。而动力电池的制造过程中&#xff0c;焊接工艺是至关重要的一环。这时&#xff0c;动力电池自动点焊机便以其高效、精准、智能的特点&#xf…...

arm64架构的copy_from_user分析

文章目录 前言代码实现内核c代码copy_from_user_copy_from_userraw_copy_from_user 内核汇编代码copy_from_user.Scopy_template.S 汇编代码分析汇编简介标签.req伪指令.macro伪指令tbz指令neg指令str指令 copy_template.S分析 小结 前言 一谈到内核-用户空间的数据拷贝&#…...

【远程工具】1.1 时间处理设计与实现(datetime库lib.rs)

一、设计原理与决策 时间单位选择 采用**秒&#xff08;s&#xff09;**作为基准单位&#xff0c;基于以下考虑&#xff1a; 国际单位制&#xff08;SI&#xff09;基本时间单位 整数秒&#xff08;i64&#xff09;方案优势&#xff1a; 精确无误差&#xff08;相比浮点数&am…...

【STM32】解读启动文件startup_stm32f10x_md.s

栈空间 栈&#xff08;Stack&#xff09;&#xff1a;栈是一种后进先出&#xff08;LIFO&#xff09;的数据结构&#xff0c;用于存储函数调用时的局部变量、返回地址和寄存器的值。启动文件会定义栈的大小&#xff0c;并将栈指针初始化为栈顶地址。在函数调用时&#xff0c;…...

Redis下载稳定版本5.0.4

https://www.redis.net.cn/download/ Redis下载 Redis 版本号采用标准惯例:主版本号.副版本号.补丁级别,一个副版本号就标记为一个标准发行版本,例如 1.2,2.0,2.2,2.4,2.6,2.8,奇数的副版本号用来表示非标准版本,例如2.9.x发行版本是Redis 3.0标准版本的非标准发行版本…...

阿里云服务迁移实战: 02-服务器迁移

ECS 迁移 最简单的方式是 ECS 过户&#xff0c;不过这里有一些限制&#xff0c;如果原账号是个人账号&#xff0c;那么目标账号无限制。如果原账号是企业账号&#xff0c;则指定过户给相同实名认证的企业账号。 具体操作步骤可以参考官方文档 ECS过户 进行操作。 本文重点介绍…...

怎么解决CentOS上Zookeeper启动失败的问题

在 CentOS 上启动 Zookeeper 失败通常是由于配置错误、端口冲突、权限问题或 Java 环境配置问题导致的。我们可以逐步排查&#xff1a; 一、查看错误日志 Zookeeper 的日志目录一般在&#xff1a; /your-zookeeper-path/logs/zookeeper.out 或者&#xff1a; /your-zookeeper-p…...

《Vue3学习手记》

下面进入Vue3的学习&#xff0c;以下代码中都有很详细的注释&#xff0c;代码也比较清晰易懂&#xff1a; Vue3 index.html是入口文件 Vue3通过createApp函数创建一个应用实例 main.ts: // Vue3中通过createApp函数创建应用实例 // 引入createApp用于创建应用 import { crea…...

【Ubutun】 在Linux Yocto的基础上去适配4G模块

1&#xff09;、完整解决流程总结 一. 固定4G模块的网络接口名 usb0&#xff08;基于物理路径&#xff09; # 创建UDEV规则文件 sudo vi /etc/udev/rules.d/10-4g-rename.rules添加内容&#xff1a; SUBSYSTEM"net", ACTION"add", ATTRS{busnum}"2&…...

达梦数据库-学习-15-大内存SQL相关视图介绍

目录 一、环境信息 二、介绍 三、数据字典表 1、V$MEM_POOL 2、V$SQL_STAT 3、V$SQL_STAT_HISTORY 4、V$LARGE_MEM_SQLS 5、V$SYSTEM_LARGE_MEM_SQLS 四、总结 一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentOS Linux release 7.9.2009 (Co…...

分治-归并系列一>翻转对

目录 题目&#xff1a;解析&#xff1a;策略一&#xff1a; 代码&#xff1a;策略二&#xff1a; 代码&#xff1a; 题目&#xff1a; 链接: link 这题和逆序对区别点就是&#xff0c;要找到前一个元素是后一个元素的2倍 先找到目标值再&#xff0c;继续堆排序 解析&#xff1…...

微服务面试题

五大组件 注册中心/配置中心 nacos 服务注册 服务启动时 将自己的id等信息发送给nacos 完成注册 服务发现 服务需要调用其他服务时 从nacos获取服务列表 交给负载均衡选择 服务监控 临时实例 由服务每隔一段时间注册中心发送信息 表示自己存活 若注册中心超过一定时间没有…...

高级java每日一道面试题-2025年3月31日-微服务篇[Nacos篇]-Nacos集群模式下的部署方案有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos集群模式下的部署方案有哪些&#xff1f; 我回答: Nacos 集群模式下的部署方案详解 在 Java 高级面试中&#xff0c;Nacos 集群部署是考察候选人对分布式系统高可用性和扩展性理解的重要议题。以下是几种常见的 Nacos 集群部…...

3dmax的python通过普通的摄像头动捕表情

1、安装python 进入cdm&#xff0c;打python要能显示版本号 >>>&#xff08;进入python提示符模式&#xff09; import sys sys.path显示python的安装路径&#xff0c; 进入到python.exe的路径 在python目录中安装(ctrlz退出python交互模式) 2、pip install mediapipe…...

vue3+vite Cannot find module ‘@/XXXXXX‘ or its corresponding type declarations

在使用vue3vite 创建新的工程时会出现Connot find module /xxx错误&#xff0c;根本原因是vite 中没有配置跟目录别名导致的&#xff0c;可以在vite.config.ts 中增加如下配置 如果在tsconfig.json中增加 "compilerOptions": {"paths": {"/*": …...

vmware-exporter容器

vmware-exporter干嘛的&#xff0c;需要的都知道&#xff0c;不再赘述&#xff0c;如果你不了解&#xff0c;说明你也用不到&#xff0c;此文可略过。 如果你嫌自行部署比较麻烦&#xff0c;可移步https://download.csdn.net/download/qq_28608175/90595900下载容器打包文件&a…...

异形遮罩之QML中的 `OpacityMask` 实战

文章目录 &#x1f327;️ 传统实现的问题&#x1f449; 效果图 &#x1f308; 使用 OpacityMask 的理想方案&#x1f449;代码如下&#x1f3af; 最终效果&#xff1a; ✨ 延伸应用&#x1f9e0; 总结 在 UI 设计中&#xff0c;经常希望实现一些“异形区域”拥有统一透明度或颜…...

代码随想录算法训练营Day27 | Leetcode 56. 合并区间、738.单调递增的数字、968.监控二叉树

代码随想录算法训练营Day27 | Leetcode 56.合并区间、738.单调递增的数字、968.监控二叉树 一、合并区间 相关题目&#xff1a;Leetcode56 文档讲解&#xff1a;Leetcode56 视频讲解&#xff1a;Leetcode56 1. Leetcode56. 合并区间 以数组 intervals 表示若干个区间的集合&am…...

【SQL】常见SQL 行列转换的方法汇总 - 精华版

【SQL】常见SQL 行列转换的方法汇总 - 精华版 一、引言二、SQL常见的行列转换对比1. 行转列 Pivoting1.1 ​​CASE WHEN 聚合函数​​1.2 ​​IF 聚合函数​​1.3 ​​PIVOT操作符​​ 2.列转行 Unpivoting2.1 UNION ALL​​2.2 ​​EXPLODE函数&#xff08;Hive/Spark&#…...

docx文档转为pdf文件响应前端

1、转换文件&#xff08;docx~pdf&#xff09; 1.引入pom依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>20.12.0</version> </dependency>2.读取docx文档数据-转换 // 初…...

python办公自动化------word转换pdf

需要安装包&#xff1a;docx2pdf 例1&#xff1a;将docx文件转换为pdf文件 from docx2pdf import convertconvert("./dataFile/test_doc.docx", "./dataFile/测试文件转换.pdf") 运行结果&#xff1a;...

cs224w课程学习笔记-第10课

cs224w课程学习笔记-第10课 异构图 前言一、异构图1、异构图定义2、异构图与同构图 二、异构图下的GNN1、GCN扩展至RGCN1.1 RGCN原理1.2 异构图的任务预测特点1.3 异构图任务预测基础案例 2、完整的异构图GCN三、异构图下的Transformer 前言 异构图的定义是节点内部存在类型不…...