/**
* 145. 二叉树的后序遍历
* @author wsq
* @date 2020/09/29
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal
*/
package com.wsq.tree;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
public class PostorderTraversal {
/**
* 使用栈结构模拟递归,关键点是怎么判断右节点已经被访问过了
* 因此增加了一个prev指针,指向上一个被访问的节点,从root重新访问右节点时,就可以判断出,右节点是否已经被访问过了
* @param root
* @return
*/
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> ansList = new ArrayList<>();
if(root == null) {
return ansList;
}
Deque<TreeNode> stack = new LinkedList<>();
TreeNode prev = null;
while(root != null || !stack.isEmpty()) {
while(root != null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
if(root.right == null || root.right == prev) {
ansList.add(root.val);
prev = root;
root = null;
}else {
stack.push(root);
root = root.right;
}
}
return ansList;
}
}
相关推荐
Python自动化车载测试:5分钟搞定CANoe COM接口调用(附完整代码)
本文详细介绍了如何使用Python快速实现CANoe COM接口调用,完成车载测试自动化。通过实战案例展示ECU信号测试框架搭建,包括环境配置、核心架构解析、信号读写封装及多线程安全方案,帮助开发者5分钟内掌握高效测试技巧。
230-二叉搜索树中第K小的元素
递归版: /** * 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) .
华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录
参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md
leetcode-二叉树的前中后遍历的迭代方法
题目就不用列了,递归法是很简单的,但是迭代法还是有一定难度,在此记录 前序(easy): class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if(root == NULL) return res; stack<TreeNode*> s; s.push
从NVLINK到EthLink:GPU互联技术演进全解析(含最新行业趋势)
本文深入解析了从NVLINK到EthLink的GPU互联技术演进,重点剖析了Scale-up与Scale-out两种核心范式。文章详细对比了NVLINK、UALINK及革命性的EthLink技术,后者创新性地将以太网改造为支持Load/Store与RDMA双语义的高性能互联网络,旨在打破封闭生态,实现高性能与开放性的统一。最后,文章提供了技术选型指南并展望了未来以以太网为主导、语义融合的行业趋势。
本地部署ComfyUI:开源AI生图与视频生成完整实战指南
在生成式AI应用快速普及的今天,云端工具常受制于排队、积分和素材管理等问题,而本地化部署正成为开发者与创作者的高效替代方案。其核心思路是基于开源工作流引擎,将图像生成、视频生成与后期处理整合到同一套可离线运行的系统中。ComfyUI作为当前最受关注的节点式工作流平台,凭借灵活的模块组合和强大的自定义能力,降低了从图像模型调用到视频扩展的工程门槛。本文从环境配置与依赖安装入手,系统讲解如何部署ComfyUI、加载Checkpoint模型、跑通文生图基础流程,再通过自定义节点接入视频生成能力,同时介绍API批量
LeetCode -- 二叉树的后序遍历(最详细的解法!!!)
给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 解题思路:总体思路分为递归和迭代两种。两者都是依赖于后序遍历的顺序:左、右、根。具体细节看下面代码。 代码一: /*递归1、最简单的算法*/ /*class Solution { public: vector&lt;...
阿里平头哥与华为芯片的比较
阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。
二叉树的后续遍历(迭代法)
迭代法实现二叉树的后续遍历 1、递归版本 public static void dfs(TreeNode root){ if(root==null){ return; } if(root.left!=null) dfs(root.left); if(root.right!=null) dfs(root.right); System.out.println(root.val); } 从递归版本可以看出我们第一步需要遍历完所有的左节点 这里
西工大noj100题python2024第三季21-30
【代码】西工大noj100题python2024第三季21-30。
ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境
为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境
Leetcode: NO.145 二叉树的后序遍历 迭代+递归
题目 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 解题记录 递归法 /** * @author: ffzs * @Date: 2020/9/29 上午7:43 */ class T
分级 API Key 的使用案例
分级 API Key 的使用案例 1. 背景介绍 1.1 问题由来 随着网络服务的普及,API(Application Programming Interface,应用程序编程接口)成为了连接不同系统和应用的关键桥梁。API Key(API密钥)
[LeetCode]145. 二叉树的后序遍历(java实现)栈 迭代
[LeetCode]145(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(): 3. 解法 ---------------------------------------------------解法---------------------------------------------------: 可能存在的问题: 4. 可能有帮助的前置习题 5. 所用到的
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
Leetcode 145 二叉树的后序遍历 迭代、递归、莫里斯算法 python实现
leetcode145 二叉树的后序遍历
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
[二叉树遍历递归和迭代实现整理]144. 二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序遍历
二叉树遍历的递归和迭代实现前序遍历概念 + 举例习题递归实现迭代实现写法1:只有右孩子入栈 前序遍历 概念 + 举例 前序遍历:对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子。 例如: 前序遍历序列:[1,2,4,6,7,3,5] 习题 题目链接:144. 二叉树的前序遍历 递归实现 二叉树遍历的递归实现都很简单,只需要按上面所述的前序遍历的概念出发编写代码即可: 先树根,然后左子树,然后右子树。每棵子树递归。 在递归函数最前面设置好递归出口:当root == null,退出当前递归
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
LeetCode 145 二叉树的后序遍历 Java
LeetCode 145 二叉树的后序遍历 Java题目描述代码 题目描述 给定一个二叉树,返回它的 后序 遍历。 代码 迭代实现 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...
leetcode145. 二叉树的后序遍历(迭代法实现)
给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历。
LeetCode94. 二叉树的中序遍历、前序144、后序145(栈实现迭代)
144. 二叉树的前序遍历 https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ # Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = None class Solutio
tag二叉树-刷题预备知识-2. 二叉树的前中后序遍历递归, 迭代, Java实现 +lt.144. 二叉树的前序遍历 +lt.94. 二叉树的中序遍历 + lt.145. 二叉树的后序遍历 1.5
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxx 在本文章中, 将会阐述二叉树的三种遍历方式的递归和迭代写法; 之前我们写过: tag二叉树-刷题预备知识-1. 深入浅出深度优先遍历(DFS)和广度优先遍历(BFS), 建议反复阅读几遍, 你会懂得, 递归和深度优先遍历, 队列/栈和广度优先遍历几乎就是相辅相成的, 而且在你熟练掌握了DFS和BFS之后, 对于这种遍历的题目其实就能够信手拈来了; 可能会有些朋友对二叉树的迭代比较发怵, 先学学上文的BFS! lt.
LeetCode第145题—二叉树的后序遍历—Python实现
title: LeetCode No.145 categories: OJ LeetCode tags: Programing LeetCode OJ LeetCode第145题—二叉树的后序遍历 回家休息几天,搬宿舍心累。再回实验室就开始好好科研了!!! 自己代码的开源仓库:click here 欢迎Star和Fork ???? 题目描述 v给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出
Leetcode145. 二叉树的后序遍历 Binary Tree Postorder Traversal - Python 以递归/迭代算法实现
注意每一次递归的逻辑:根据前中后序遍历,调整result.append(root.val)相对其它两步的位置。注意traversal函数的函数参数:root根节点。注意结束递归条件:当root == None。
Leetcode 145.二叉树的后序遍历(Binary Tree Postorder Traversal)
Leetcode 145.二叉树的后序遍历 1 题目描述(Leetcode题目链接) 给定一个二叉树,返回它的 后序 遍历。 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 2 题解 二叉树的基本遍历方法之一。 递归方法: # Definition for a ...
LeetCode:145. 二叉树的后序遍历(迭代和递归方法,C++带详细注释)
LeetCode:145. 二叉树的后序遍历(迭代和递归方法,C++带详细注释) /** * 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
Leetcode145. Morris后序遍历
文章概览Morris后序遍历Morris后序遍历算法详解Leetcode 501题目描述解题思路完整代码 Morris后序遍历 前面我们遇到了Morris中序遍历算法,它可以实现O(1)的空间复杂度 我们结合Leetcode中第145题二叉树的后序遍历,来学习Morris后遍历算法。 以下使用python3~ Morris后序遍历算法详解 本部分参考leetcode145官方题解 在中序遍历的时候,一定先遍历左子树,然后遍历当前节点,最后遍历右子树。在常规方法中,我们用递归回溯或者是栈来保证遍历完左子树可以
python-leetcode-145. 二叉树的后序遍历
后序遍历(Postorder Traversal)按照的顺序访问节点。可以使用递归或迭代的方式实现。
1135



被折叠的 条评论
为什么被折叠?



