leedcode——二叉树的后序遍历

Android Update Engine 分析(三四)OTA 签名都支持哪些算法? 写了几十篇还没涉及到 OTA 签名算法细节,OTA 讨论群也很少问这个,毕竟签名算法纯理论的问题,一旦实现好就极少需要改动,只需要进行一些配置,准备好签名的秘钥和证书就可以了。限于签名的算法理论太过于抽象,本篇不讨论签名算法细节,但会总结一些签名操作。以及 Android OTA 包支持的签名算法。本文主要分析 Update Engine 中支持的签名算法,以及这些算法的操作实现(不涉及原理部分),并总结签名和验签使用的 key。 阅读详情

题目:Given a binary tree, return the postorder traversal of its nodes' values.

思路:

(1)递归方法,递归打印左孩子,递归打印右孩子,打印根节点。

(2)非递归方法,使用栈,逐层push左孩子,如果右孩子为NULL或已经打印过,打印根节点,否则把右孩子重复上述步骤。

递归代码:

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void postOrder(TreeNode *root,vector<int>&vec){
        if(root != NULL){
            postOrder(root->left,vec);
            postOrder(root->right,vec);
            vec.push_back(root->val);
        }
    }
    vector<int> postorderTraversal(TreeNode *root) {
        vector<int>vec;
        postOrder(root,vec);
        return vec;      
    }
};

非递归代码:

class Solution {
public:
    vector<int> postorderTraversal(TreeNode *root) {
        vector<int> vec;
        if(root == NULL)  //空树        
            return vec;
        stack<TreeNode*> st;
        TreeNode *tag = NULL;//标志位,记录已经访问过的节点
        TreeNode *p = root;
        while(p != NULL || !st.empty()){ 
            while(p != NULL){//依次将左孩子入栈
                st.push(p);
                p = p->left;
            }
            p = st.top();//取栈顶元素
            if(p->right == NULL || p->right == tag){//右孩子为空或者右孩子已经访问过 
                vec.push_back(p->val);   
                st.pop();   //弹出栈顶元素
                tag = p;      //更新标志位
                p = NULL;    //p置为NULL
            }
            else{
                    p = p->right;//否则p设置为右孩子,重复上述步骤
            }
        }
        return vec; 
    }
};



一文吃透:从零到一开发一套 ABAP RAP 应用的完整路径 ABAP RAP开发实战摘要 本文系统介绍了ABAP RESTful Application Programming Model (RAP)在企业级应用开发中的实施路径。文章以出差申请业务场景为例,详细拆解了RAP开发的六步主线流程: 数据库表设计:规范主键、审计字段设计 CDS数据建模:通过视图定义业务对象实体及关联 行为定义与实现:使用BDEF声明事务规则,Behavior Pool类实现业务逻辑 业务对象投影:裁剪服务接口视图 服务定义与绑定:按OData协议暴露服务 UI集成测试:支持Fiori E 阅读详情

相关推荐

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1551

3. 二叉树的后续遍历 (postOrder)

头文件: 用到的是前序遍历中的头文件,具体可参见 "二叉树的前序遍历" 一,后序遍历的概念 后序遍历 按照 左儿子-右儿子-根节点 的顺序访问二叉树 方式 1,递归遍历 2,栈迭代遍历 (借助栈结构) 3, Morris 遍历 (栈迭代的基础上优化空间复杂度) 二,递归遍历 /* 递归遍历 先访问当前节点的左子树,然后再访问当前...

没戴面具的小丑 2237

Day470&471.Netty概述&Netty高性能架构设计 -netty

Netty概述 一、原生 NIO 存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等等。 JDK NIO

阿昌爱Java 1572

前序中序后序遍历总结

#include <iostream> #include <vector> #include <stack> #include <algorithm> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x)...

weixin_40520161的博客 394

ThinkBook 16p 2024 BIOS降压定频实战:从解锁CFG Lock到AC Loadline调优

高性能笔记本在满载时频繁撞上温度墙,通常源于固件层默认电压冗余过大,而系统级降压工具又受限于CFG Lock锁定。要根治问题,需要从BIOS固件层面理解电压管理机制——AC/DC Loadline参数控制着CPU在不同负载下的电压请求,通过修改这些负载线值可以安全降低电压,解锁CFG Lock后还能让XTU、ThrottleStop等软件调参工具恢复可用。这种BIOS级调优在工程实践中广泛用于改善散热、稳定频率、压降风扇噪音,尤其适用于联想ThinkBook 16p 2024与拯救者Y9000P等采用HX平

weixin_32496547的博客 388

pytorch多层感知机实现假钞识别(完整项目构建)

目录1 项目构建2 超参数设置 config.py3 数据集预处理 preprocess.py4 数据集类构建 dataset_banknote.py5 模型构建 model.py6 训练trainer.py6.1 查看损失曲线7 在测试集上运行 inference.py 1 项目构建 构建项目文件夹Banknote,以及子文件夹与py文件。 名称 作用 data目录 存放原始数据与预处理后切分为训练集、验证机、测试集的数据 log目录 存放训练过程中保存的指标,如损失、精确度等

Demon_LMMan的博客 2027

二叉树后序遍历实例

Given a binary tree, return the postorder traversal of its nodes' values. 问题解决: class Solution { public:     void postOrder(TreeNode *root,vector&vec){         if(root != NULL){

golden_dreams的博客 588

基于FPGA的TDC延迟链优化与码密度校准方法(1)——原理与实现

本文深入探讨了基于FPGA的时间数字转换器(TDC)延迟链非均匀性问题及其码密度校准方法。通过分析工艺偏差、温度电压影响等根源,详细介绍了码密度测试原理、逐位校准技术及气泡消除算法,并分享了自适应校准策略与多场景应用实践,有效提升TDC测量精度至皮秒级。

kiwi8的博客 488

leetcode107_二叉树层次遍历2

一. 借鉴之前二叉树的相关题目, 因为这题是从二叉树最底层获取层次值, 因此我先获取二叉树深度, 然后加入level参数, 将值插入在应该插入的层级中.(对比着leetcode102_二叉树的层次遍历看就更好了) #include <iostream> #include <algorithm> #include <vector> using namespa...

qieyuan4083的博客 160

从零开始:如何利用Device Monitoring Studio构建高效数据监控系统

本文详细介绍了如何利用HHD Device Monitoring Studio从零开始构建高效数据监控系统。涵盖基础架构设计、核心功能解析、实战部署指南及高级数据分析技术,帮助用户实现非侵入式监控,提升设备调试和网络协议分析效率。特别适合物联网和工业自动化领域的开发者与运维人员。

weixin_29201859的博客 329

SDR 和 DDR 的区别

SDR 和 DDR 的差别,最明显提现在传输速率和频率上。DDR SDRAM与SDRAM的基本结构是相似的,最根本的区别在于DDR 支持在一个时钟周期内传输两次数据,,SDR 只能传输一次数据。

串起点滴 1960

LeetCode:二叉树的后序遍历(递归与非递归法)

  二叉树结点类: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x): val(x), left(NULL), right(NULL) {} }; 递归法:  class Solution{ public: void postOrder(Tr...

865

UG\NX二次开发 分割曲线

分割曲线没有ufun函数?那就换一种思路实现。

王牌飞行员_里海的博客 1146

leedcode 从中序与后序遍历序列构造二叉树

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): ...

futurewq的博客 149

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Leedcode 145. 二叉树的后序遍历

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

llf000000的博客 93

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[Leedcode][JAVA][第236题][二叉树的公共祖先][后序遍历][BFS]

【问题描述】 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5 和节

dadongwudi的博客 248

pscad IEEE标准系统搭建说明

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

LeedCode 106:从中序与后序遍历序列构造二叉树

从中序与后序遍历序列构造二叉树 题目描述: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗二叉树。 示例 1: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] 输出:[3,9,20,null,null,15,7] 示例 2: **输入:**inorder = [-1], postorder = [-1] 输出:[-1] 链

m0_61083409的博客 145

leedcode【145】. 二叉树的后序遍历——Java解法(迭代法)

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root = [1,null,2,3] 输出:[3,2,1] 示例 2:输入:root = [] 输出:[] 示例 3:输入:root = [1] 输出:[1]提示:树中节点的数目在范围 [0, 100] 内 -100 <= Node.val <= 100进阶:递归算法很简单,你可以通过迭代算法完成吗?时间复杂度:空间复杂度:Java 性能

qq_42631788的博客 449

[Leedcode][JAVA][第94/144/145题][前中后序遍历][递归][迭代][二叉树]

【问题描述】[] 前序遍历 先输出当前结点的数据,再依次遍历输出左结点和右结点 中序遍历 先遍历输出左结点,再输出当前结点的数据,再遍历输出右结点 后续遍历 先遍历输出左结点,再遍历输出右结点,最后输出当前结点的数据 【解答思路】 递归 /迭代(栈) 时间复杂度:O(N) 空间复杂度:O(N) 1. 前序遍历 1.1 递归 二叉树遍历(前序、中序、后序)的递归方法,唯一改变的是记录节点值操作的位置 class Solution { public List<Integer

dadongwudi的博客 227

java用中根后根序列构造二叉树_LeedCode从中序与后序遍历序列构造二叉树

题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20/ \15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-binary-...

weixin_42369343的博客 287

[Leedcode][JAVA][第199题][二叉树的右视图][BFS][DFS][前中后序遍历]

【问题描述】199.二叉树的右视图 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <-...

dadongwudi的博客 201

Day14:二叉树递归迭代遍历 LeedCode:144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历

【代码】Day14:二叉树递归迭代遍历 LeedCode:144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历。

2301_76352996的博客 382

Day18:LeedCode 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树

返回值为boolean类型,返回树是否存在路径,传入当前路径和cur_sum和目标路径和targetsum。为什么不是遇见空结点返回,该结点为空,说明他的上一个结点可能是结果,无法将结果更新为他的上一个结点。第四步:切割中序数组,切成中序左数组和中序右数组 (顺序别搞反了,一定是先切中序数组)需要一个全局变量记录深度和结果,传入树的根节点,和当前深度,返回值为void。如果到达叶子结点,这条路径和的值等于目标值,返回true,否则返回false。由于树是空的,所以不存在根节点到叶子节点的路径。

2301_76352996的博客 1224

leetcode----二叉树的后序遍历(递归和非递归)

(1)方法一:递归 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList */ ..

sunnnnh的博客 266

python 二叉树前序,中序,后序遍历 LeetCode No.144, No.94,No.145

这题和98基本上是一模一样,所以写98题之后,顺便写了97题,刚好想用一行写完,就有了下面的写法。大家以后写的时候可以多试试,有很大的成就感,而且为枯燥的刷题生活,增添一点乐趣。今天暂时先写个中序遍历吧,等过几天在写个前序和中序,还有ass要做,哭ing。 # Definition for a binary tree node. # class TreeNode(object): # d...

GhostintheCode的博客 296

LeetCode145 : 二叉树的后序遍历 (非递归)

文章目录1. 题目描述2. 思路分析3. 代码展示 1. 题目描述 2. 思路分析 后序 : 左 – 右 – 根 思路和前序中序大体一致, 只是多了一个右子树是否访问的判断 下面给出前序和中序的以供参考 二叉树的前序遍历 二叉树的中序遍历 3. 代码展示 class Solution { public: vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> st;

Monster的博客 243
上一篇: leedcode——链表插入排序
下一篇: leedcode——二叉树的前序遍历
ZH_learningblog
博客等级 码龄10年 22粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值