【树-简单】145. 二叉树的后序遍历

【LeetCode 困难 树 python3】145. 二叉树的后序遍历 想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 每日八点有干货推送,微信随时解答你的疑问 145. 二叉树的后序遍历 python3 困难 树 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? from typing import List # Definition for a binary tree node.. 阅读详情

【题目】
给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]
1

2
/
3

输出: [3,2,1]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?
【代码】
【递归】
在这里插入图片描述

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def visit(self,root):
        if not root:
            return
        self.visit(root.left)
        self.visit(root.right)
        self.ans.append(root.val)
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        self.ans=[]
        self.visit(root)
        return self.ans

【迭代】
在这里插入图片描述

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        if not root:
            return list()
        
        res = list()
        stack = list()
        prev = None

        while root or stack:
            while root:
                stack.append(root)
                root = root.left
            root = stack.pop()
            if not root.right or root.right == prev:
                res.append(root.val)
                prev = root
                root = None
            else:
                stack.append(root)
                root = root.right
        
        return res

【Mirrors】
在这里插入图片描述

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        def addPath(node: TreeNode):
            count = 0
            while node:
                count += 1
                res.append(node.val)
                node = node.right
            i, j = len(res) - count, len(res) - 1
            while i < j:
                res[i], res[j] = res[j], res[i]
                i += 1
                j -= 1
        
        if not root:
            return list()
        
        res = list()
        p1 = root

        while p1:
            p2 = p1.left
            if p2:
                while p2.right and p2.right != p1:
                    p2 = p2.right
                if not p2.right:
                    p2.right = p1
                    p1 = p1.left
                    continue
                else:
                    p2.right = None
                    addPath(p1.left)
            p1 = p1.right
        
        addPath(root)
        return res
Leetcode——145,二叉树后序遍历 /** * \* Created: liuhuichao * \* Date: 2019/8/21 * \* Time: 28:08 PM * \* Description: 二叉树的后序遍历 : 后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点 * \ * 给定一个二叉树,返回它的 后序 遍历。 * <p> * 示例: * <p> ... 阅读详情

相关推荐

LTE信令流程实战:从Attach到Service Request的完整解析(附常见问题排查)

本文深入解析LTE信令流程中的Attach和Service Request关键环节,提供从基础原理到实战排查的完整指南。涵盖鉴权、承载建立等核心步骤,分析常见故障模式及优化方案,并附赠信令跟踪工具使用技巧,助力通信工程师提升网络运维效率。

alpha的博客 319

二叉树的遍历——DFS

先序遍历 void preorder(node* root) { if(root == NULL) return; printf("%d\n", root->data); preorder(root->lchild); preorder(root->rchild); } 中序遍历 void inorder(node* root) { if(root == NULL) return; inorder(root->lchild); printf("%d\n", root.

tian__si的博客 657

达梦数据库JDBC连接池断开自动重连设置

一、场景 在网络状况不是非常良好,经常会出现暂时性的拥塞或者断开的情况,而且当我们重启数据库时也会发生类似的情况。所以需要配置中间件的连接池来实现连接测试以及自动重连,通过重新配置连接池,成功解决了这个问题。下面会给出一份数据源配置参数详单和一份推荐的数据源配置项。 二、连接池配置参数 1. initialSize:连接池启动时创建的初始化连接数量 2. maxActive:连接池中可同时连接的最大的连接数 3. maxIdle:连接池中最大的空闲的连接数,超过的空闲连接将被释放,如果设置为负

lilv1989的博客 7237

二叉树搜索树后序遍历序列

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 分析: 二叉搜索树:对于数中的每一个节点都有左子树节点小于根节点,根节点小于右子树节点 后续遍历:先遍历左子树,再遍历右子树,再遍历根节点 最后遍历的必然是根节点,左边前半部分是左子树,右半部分是右子树,当然也有可能左边全是左子树或者右子树,如果...

qq_42463620的博客 239

机器学习-深嵌交叉验证(Nested Cross-Validation)

Section I: Code and Analyses 第一部分:代码 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from...

Santorinisu Blogs 2717

Ubuntu开发环境配置——持续更新

本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。

m0_53365889的博客 2225

NOWCODER【编程题】——二叉树的后序遍历序列

题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 解题思路 首先我们需要知道二叉树后序遍历序列的特点:最后一个节点为根节点,去掉根节点的话,可以把s列分为两部分,左边那部分所有节点值都比根节点小,右边那部分都比根节点大。下面看怎么解决这个题: 首先判断这棵树是否为空树,如果为空树的话,返回f...

飞奔的蜗牛 640

高分三号SAR影像超精细条带数据预处理实战:从原始数据到地理编码的完整操作指南

本文提供了高分三号SAR影像超精细条带数据预处理的完整实战指南。详细介绍了从原始数据导入、多视处理、滤波去噪、DEM准备到地理编码与辐射定标的完整流程,帮助用户利用SARscape软件将原始SAR数据转化为可用于分析的地理编码产品。

tree8的博客 578

LeetCode第145题_二叉树的后序遍历

给你一棵二叉树的根节点root,返回其节点值的。

qq_40263592的博客 1392

SAP OData 开发从入门到提高教程的目录

笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 7249

华为OD机考双机位C卷 - 两个字符串间的最短路径(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 两个字符串间的最短路径(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 835

Java实现 LeetCode 145 二叉树的后序遍历

145. 二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? /** * Definition for a binary tree node. * public class TreeNode { * ...

南 墙 1万+

ONNX Runtime C# YOLO全链路压测:从300ms到22ms的15个底层优化技巧

摘要:本文分享了工业质检场景下C#调用YOLOv8s ONNX模型的性能优化实战经验。原始单帧推理耗时300ms无法满足产线需求,通过全链路分析定位瓶颈(预处理85ms、推理180ms、后处理30ms)。重点优化措施包括:使用OpenCVSharp CUDA加速预处理(85ms→12ms),开启ONNX Runtime ALL级别图优化,选用TensorRT执行提供程序(180ms→22ms),以及优化内存管理和线程调度。最终实现单帧总耗时22ms±2ms,GPU利用率提升至85%,完整满足产线120块板/

2601_94871597的博客 402

LeetCode 145 二叉树的后序遍历

LeetCode 145 二叉树的后序遍历 题目链接 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 看题目的意思是想让我们写个非递归的后序遍历,但那个非常复杂,所以我强行来了一波递归????,AC代码如下: /** * Definition for a binary tree node. * struct TreeNode { * int val; * Tr

旺崽的博客 2729

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode145. Morris后序遍历

文章概览Morris后序遍历Morris后序遍历算法详解Leetcode 501题目描述解题思路完整代码 Morris后序遍历 前面我们遇到了Morris中序遍历算法,它可以实现O(1)的空间复杂度 我们结合Leetcode中第145题二叉树的后序遍历,来学习Morris后遍历算法。 以下使用python3~ Morris后序遍历算法详解 本部分参考leetcode145官方题解 在中序遍历的时候,一定先遍历左子树,然后遍历当前节点,最后遍历右子树。在常规方法中,我们用递归回溯或者是栈来保证遍历完左子树可以

lijianyi0219的博客 2709

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C/C++描述 LeetCode 145. 二叉树的后序遍历

C/C++描述 LeetCode 145. 二叉树的后序遍历   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 题解 递归解法:

一起加油 1520

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LeetCode 145二叉树的后序遍历

LeetCode 145二叉树的后序遍历 题目简述:给定一个二叉树,返回它的 后序 遍历。 输入:[1,null,2,3] 输出:[3,2,1] 思路:递归 class Solution { public: vector<int> res; void dfs(TreeNode *root) { if(!root) return; dfs(root->left); dfs(root->right);

XBlog 388

LeetCode —— 145. 二叉树的后序遍历

145. 二叉树的后序遍历:递归 + 非递归

微笑,来自内心坚不可摧的自信。 985

LeetCode 145. 二叉树的后序遍历(后序遍历&总结)

文章目录1. 题目信息2.1 递归2.2 循环,必须掌握a. 单栈b. 双栈解法 1. 题目信息 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(LeetCode) 链接:https://leetcode-c...

Michael是个半路程序员 1521

LeetCode 145 二叉树的后序遍历 Java

LeetCode 145 二叉树的后序遍历 Java题目描述代码 题目描述 给定一个二叉树,返回它的 后序 遍历。 代码 迭代实现 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...

qq_29061435的博客 223

LeetCode 145. 二叉树的后序遍历 | Python

使用递归、迭代的方法,解决 LeetCode 《145. 二叉树的后序遍历》 问题

"大梦三千秋的博客 759

leetcode-145 | 二叉树的后序遍历

title: leetcode-145 | 二叉树的后序遍历 date: 2019-7-28 15:13:38 comments: true categories: “leetcode” tags: - leetcode 困难难度 - 栈 - 二叉树的遍历 题目描述 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1   \  &n...

梦否 483

LeetCode145——二叉树的后序遍历

我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/ 题目描述: 知识点:二叉树、后序遍历、递归 思路一:递归实现 学过数据结构的人都知道,二叉树天然的具有递归性质,因为...

清风阁 525

145. 二叉树的后序遍历

题目: 145. 二叉树的后序遍历 题解: 1. 题解一:递归后序遍历 第一种解决方法是使用递归。这是经典的方法,直截了当。我们可以定义一个辅助函数来实现递归。 2. 题解二:迭代后序遍历 代码: 1. 代码一:递归后序遍历 /** * code145 */ import java.util.*; public class code145 { // 解法一:递归 public static List<Integer> postorderTraversal(Tree

dev_zyx的博客 651
上一篇: 【树-简单】94. 二叉树的中序遍历
下一篇: 【树-简单】1022. 从根到叶的二进制数之和(两种方法:递归、迭代)
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值