2024.2.19力扣每日一题——N叉树的后序遍历

2024.2.19

      • 题目来源
      • 我的题解
        • 方法一 递归实现(深度优先遍历)
        • 方法二 迭代实现(栈)

题目来源

力扣每日一题;题序:590

我的题解

方法一 递归实现(深度优先遍历)

与二叉树的后序遍历的递归实现相似,只是有些细节不一样

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

public List<Integer> postorder(Node root) {List<Integer> res=new ArrayList<>();if(root==null)return res;post(root,res);return res;
}
public void post(Node root,List<Integer> res){if(root==null)return ;// 细节的不同for(Node node:root.children){post(node,res);}res.add(root.val);
}
方法二 迭代实现(栈)

与二叉树的后序遍历的迭代实现相似,但是细节处不相同

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

public List<Integer> postorder(Node root) {List<Integer> res=new ArrayList<>();if(root==null)return res;LinkedList<Node> stack=new LinkedList<>();stack.push(root);Node pre=null;while(!stack.isEmpty()){Node cur=stack.peek();System.out.println(cur.children.size());//判断是否遍历完当前节点的所有子节点boolean f=false;for(Node node:cur.children){f|=node==pre;}//判断当前节点是否是叶子节点有所不同if(cur.children.size()==0||((pre!=null)&&f)){Node t=stack.pop();res.add(t.val);pre=t;}else{//从右往左压栈for(int i=cur.children.size()-1;i>=0;i--){Node node=cur.children.get(i);stack.push(node);}}}return res;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

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

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

相关文章

c++游戏 狼人杀(升级)

代码&#xff1a; #include <iostream>//C输入输出流库 #include <cstdlib>//使用srand函数要用到这个库 #include <ctime>//使用time函数要用到这个库 #include <Windows.h> #include <conio.h>long long sr0; using namespace std; void brc(…

Spring——依赖注入

开启DI服务(依赖注入) DI依赖注入的理解 依赖开发人员提供相关输入依赖Spring容器对象将相关数据赋到属性中 基于XML文件 通过set方法注入 property标签通过调用属性对应的set方法完成赋值属性赋值 基本类型赋值 value"xxx"引用类型赋值 ref "xxx" …

VScode-配置文件

导入配置文件 ShiftCtrlp 输入&#xff1a; import 选择文件 点击确认 导出配置文件 设置选择导出 确认导出 保存为本地文件 保存文件

黄金票据攻击

黄金票据攻击——域内横向移动技术 一、黄金票据攻击介绍&#xff1a; 黄金票据攻击是一种滥用Kerberos身份认证协议的攻击方式&#xff0c;它允许攻击者伪造域控krbtgt用户的TGT&#xff08;Ticket-Granting Ticket&#xff09;。通过这种方法&#xff0c;攻击者可以生成有效…

【原创】基于springboot+vue疫苗预约管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

element-ui tableData导出为xlsx文件

下载 npm i / yarn add file-saver、xlsx库 引入 import FileSaver from “file-saver”; import XLSX from “xlsx”; const simexport (data) > {// if (data.create_time && data.create_time.length > 0) {// data.start_time parseTime(data.create_tim…

Rust vs C++:2024,谁更懂错误处理?

讲动人的故事,写懂人的代码 「席双嘉,听说你的C++项目又因为忘了检查返回值导致内存泄漏,又加班了?」 周五中午,在国内某科技巨头熙熙攘攘的员工餐厅,贾克强半开玩笑地戳了戳坐在隔壁的席双嘉,眼神中满是戏谑。 贾克强,一个热衷于Rust的程序员,总是乐于挑战和探索新…

mfw-攻防世界

题目 点击about发现Git感觉是Git泄露 直接访问.git 本来用githack去扒源码但是成功了没文件一脸懵&#xff0c; 后面换一个工具githacker注意二个之间有区别 githack和githacker 然后去结果里查看文件 发现flag文件但是 没什么用 <?php // TODO // $FLAG ; ?> 然后…

算法设计和分析1( 算法问题求解基础)

chapter1 算法问题求解基础 1.1算法概述 1.什么是算法 算法—用计算机实现的问题求解方法。5个特征 &#xff08;1&#xff09;输入&#xff1a;0或多个 &#xff08;2&#xff09;输出&#xff1a;至少一个 &#xff08;3&#xff09;确定性&#xff1a;算法每一条指令都有…

QCC发射(TX SOURCE)USB发射A2DP音乐,实现MIC声音到主机

之前写过 CSR8670/8675 发射&#xff08;TX SOURCE&#xff09;USB发射A2DP音乐&#xff0c;实现MIC声音到主机的文章&#xff0c;目前把该方案移植到QCC方案&#xff08;QCC3040 QCC3056&#xff09;。 因 CSR8670/8675成本比较贵&#xff0c;现在移植到QCC平台。 由于众多游…

Pytorch for training1——read data/image

blog torch.utils.data.Dataset create dataset with class torch.utils.data.Dataset automaticly import torch from torch.utils.data import Datasetclass MyDataset(Dataset):def __init__(self, data):self.data datadef __getitem__(self, index):# 根据索引获取样本…

一句命令pip卸载所有已安装库

pip3 list --formatfreeze | grep -v ^\-e | grep -v pip | grep -v setuptools | cut -d -f 1 | xargs -n1 pip3 uninstall -y 这个命令的解释如下&#xff1a; pip list --formatfreeze&#xff1a;列出所有已安装的库及其版本号。grep -v ^\-e&#xff1a;排除那些以-e开…

华为OD面试手撕算法-合并排序数组

题目描述 本题是leetcode一道简单题&#xff1a;合并两个有序数组&#xff0c;但是对于时间和空间复杂度面试官明确给出了限制。 // 给定两个排序后的数组 A 和 B&#xff0c;其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法&#xff0c;将 B 合并入 A 并排序。 // 初始化…

maya移除节点 修改节点

目录 maya移除节点 使用 Maya 用户界面&#xff1a; 使用脚本&#xff1a; maya 修改节点名字 使用 Maya 用户界面&#xff1a; 使用 MEL 脚本&#xff1a; 使用 Python 脚本&#xff1a; 注意事项&#xff1a; maya移除节点 使用 Maya 用户界面&#xff1a; 在“层次…

Gin框架(3)

文件上传与下载 文件上传 单文件上传 单文件上传指的是一次只上传一个文件。在Gin中&#xff0c;可以使用c.SaveUploadedFile方法来保存单个上传的文件。 // SaveUploadedFile uploads the form file to specific dst. func (c *Context) SaveUploadedFile(file *multipart…

对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试:它们能否交付实时 API?

原文作者&#xff1a;Alessandro Fael Garcia of F5 原文链接&#xff1a;对 NGINX、Kong 和 Amazon 的 API 管理解决方案进行基准测试&#xff1a;它们能否交付实时 API&#xff1f; 转载来源&#xff1a;NGINX 开源社区 NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.c…

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程

HAL STM32 硬件I2C方式读取AS5600磁编码器获取角度例程 &#x1f4cd;相关篇《STM32 软件I2C方式读取AS5600磁编码器获取角度例程》 ✨stm32使用硬件I2C去读取角度数据&#xff0c;通过STM32CubeMX工具配置工程&#xff0c;读取角度数据&#xff0c;只需要调用一个函数&#xf…

常见的服务器技术

常见的服务器技术 1.虚拟化技术&#xff1a;虚拟化技术允许在一台物理服务器上创建多个虚拟服务器&#xff0c;每个虚拟服务器都可以独立运行不同的操作系统和应用程序。这大大提高了服务器的资源利用率&#xff0c;并提供了更好的灵活性、可扩展性和可靠性。 2.负载均衡技术&…

谷歌(Google)技术面试——在线评估问题(一)

谷歌&#xff08;Google&#xff09;面试过程的第一步&#xff0c;你可能会收到一个在线评估链接。 评估有效期为 7 天&#xff0c;包含两个编码问题&#xff0c;需要在一小时内完成。 以下是一些供你练习的在线评估问题。 在本章结尾处&#xff0c;还提供了有关 Google 面试不…

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网&#xff08;IoT&#xff09;背景下&#xff0c;处理实时数据会遇到一些特定的障碍&#xff0c;如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战&#xff0c;需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…