26、leetcode二叉树的前序遍历、二叉树的后序遍历

【华为机试真题 Python实现】二叉树层序遍历(从后序与中序遍历序列构造二叉树) 《华为机试真题详解》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。现有两组字母,分别表示后序遍历(左孩子->右孩子->父节点)和中序遍历(左孩子->父节点->右孩子)的结果,请你输出层序遍历的结果。105. 从前序与中序遍历序列构造二叉树、106. 从中序与后序遍历序列构造二叉树 、107. 二叉树的层序遍历 II 阅读详情

144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。

示例:

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

输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?

My Answer

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        Stack<TreeNode> s = new Stack();
        List<Integer> res = new ArrayList();
        while(root!=null || !s.isEmpty()){
            if(root==null){
                root = s.pop();
            }
            res.add(root.val);
            if(root.right!=null){
                s.add(root.right);
            }
            root = root.left;
        }
        return res;
    }
}

145. 二叉树的后序遍历

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

示例:

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

输出: [3,2,1]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?

My Answer

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
            TreeNode p = root,r = null;
        List<Integer> ans = new ArrayList();
        Stack<TreeNode> s = new Stack();
        while(!s.isEmpty() || p != null)
        {
            if(p != null)
            {
                s.add(p);
                p = p.left;
            }
            else
            {
                p = s.peek();
                if(p.right == null || p.right == r)
                {
                    ans.add(p.val);
                    r = p;
                    s.pop();
                    p = null;
                }
                else
                    p = p.right;
            }
        }
        return ans;
    }
}
输出二叉树后序遍历的逆序 较难较易混淆的二叉树部分经典例题,不会的童鞋~~ 立即下载

相关推荐

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

C语言版:二叉树的遍历方式和逆序

C语言版:数据结构中的二叉树,先序遍历,中序遍历,后序遍历,以及它们的逆序。 文章目录二叉树的遍历一、栈的运用二、遍历方式1.先序遍历2.中序遍历3.后序遍历代码实现 二叉树的遍历 二叉树的遍历方式:先序遍历:头左右,中序遍历:左头右, 后续遍历:左右头 的规则, 下面是本篇文章的二叉树的图。 提示:以下是本篇文章正文内容,下面案例可供参考 一、栈的运用 栈的操作规则:先进后出,比如说进制转化也是栈的应用,前面文章有介绍关于进制转化,二叉树的逆序可以运用栈。 二、遍历方式 1.先序遍历 代码如下(示

m0_53318344的博客 2209

OpenMV模块视觉测距(避障)+颜色识别+TFT-LCD显示(实现原理与代码分析)

上图所示代码实际运行的帧率比较低,主要原因有以下两个:1.硬件问题,博主使用的版本比较低,可以尝试使用高版本OpenMV2.图像滤波问题。之前加入图像滤波是想提高色块识别的准确性,但是相应的运算速度也会下降。

ediykk的博客 1万+

数据结构—二叉树后序遍历求逆

/* 假设二叉树采用二叉链存储结构,设计一个算法输出从根节点到每个叶子节点的路径的逆 (即求叶子节点及其所有祖先节点的序列)。 */ #include #include #define MaxSize 100 typedef char ElemType; using namespace std; typedef struct node { ElemType data; stru

LY_624的专栏 2284

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 518

SAP产品合规(Product Compliance)管理—规格主数据 CG02/CG02WB

SAP产品合规(Product Compliance)管理—规格主数据概览 CG02/CG02WB

Lucas1211的博客 1430

树--二叉树的后序遍历

[145. Binary Tree Postorder Traversal(https://leetcode.com/problems/binary-tree-postorder-traversal/) 题目描述 二叉树的后序遍历 思想 (递归) (迭代) 先找到后序遍历的逆序根右左,然后再求得后序遍历。 解法1 左右根,递归。 # Definition for a binary tre...

lgy54321的博客 384

uniapp:实现APP获取陀螺仪数据、加速传感器、线性加速传感器,uniApp实时监听陀螺仪【XYZ】数据及停止监听与资源释放等功能示例源码,根据需求做功能(完美兼容Android安卓、苹果ios)

uniapp陀螺仪,uniapp加速传感器,uniapp线性加速传感器,APP陀螺仪数据,uniapp app 端获取陀螺仪数据示例代码,手机中获取陀螺仪的数据,uniApp实时获取陀螺仪xyz数据,android陀螺仪方向,获得陀螺仪传感器,处理传感器数据,停止监听与资源释放,Android使用陀螺仪,uniapp苹果ios陀螺仪,uni-app设备之(加速计,罗盘,陀螺仪)插件安卓/IOS APP提供了获取陀螺仪数据的能力,手机陀螺仪传感器获得手机自身旋转的角度,陀螺仪获取旋转角度,陀螺仪、加速度传感器

✅ 精选推荐文章 4268

145二叉树的后序遍历(迭代、递归)

1、题目描述 给定一个二叉树,返回它的 后序遍历。 进阶:递归算法很简单,你可以通过迭代算法完成吗? 2、示例 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 3、题解 基本思想:迭代法,后序遍历是左右根,后序遍历的逆序就是根右左,而前序遍历是根左右,所以只要稍微修改下前序遍历得到根右左的遍历顺序,最后返回根右左的逆序就是后序遍历。 #include<iostream> #include<vec...

Revendell的博客 517

LLM制造业最佳实践:基于大语言模型处理最优化问题,制造业如何更优排产,提升资源利用率

随着制造业数字化转型加速,生产排产优化成为提升企业效率和竞争力的关键环节。大语言模型(LLM)凭借其强大的多模态数据处理、动态优化和智能推理能力,在复杂排产场景中展现出独特优势。谷歌、DeepSeek等机构的研究表明,LLM可通过自然语言交互和生成式决策,突破传统优化算法的局限性。本报告结合半导体行业实践案例与技术路径,系统分析LLM在排产优化中的应用潜力与挑战。

shiter编写程序的艺术 939

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块

本文记录的是基于FasterNet的YOLOv11轻量化改进方法研究。FasterNet的网络结构借鉴 CNN 的设计理念,通过提出的PConv减少推理时的计算和内存成本,同时减少通道数并增加部分比例,降低延迟,并通过后续的PWConv来弥补特征信息可能缺失的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和六种模型,以满足不同的需求。

Limiiiing的博客 2030

二叉树后序遍历

二叉树后序遍历两种方法的对比 两种思想吧 一、root的左右节点先都放到stack中 class Solution { public List<Integer> postorderTraversal(TreeNode root) { LinkedList<Integer> res=new LinkedList<>(); ...

Junizxr的博客 284

YOLOv11改进 | Conv篇 | 2024最新轻量化自适应提取模块LAE助力边缘设备部署计算(附代码 + 修改教程 + 运行教程)

本文给大家带来的一个改进机制是最新由LSM-YOLO提出的轻量化自适应特征提取(Lightweight Adaptive Extraction, LAE)模块,其是LSM-YOLO模型中的关键模块,旨在进行多尺度特征提取,同时降低计算成本。LAE通过以下方式实现更有效的特征提取:多尺度特征提取、自适应特征提取。LAE模块可以在不增加额外参数的情况下提高了模型对ROI区域的检测性能。​欢迎大家订阅我的专栏一起学习YOLO!YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍。

Snu77的博客 4056

(第26天)【leetcode题解】226、翻转二叉树 589、N叉树的前序遍历 590、N叉树的后序遍历

树的操作都要在遍历的基础上,在遍历的过程中添加某些操作。二叉树节点定义:int val;创建二叉树节点时要用3. 递归三要素:确定参数和返回值、确定终止条件、确定递归逻辑4. 树的迭代遍历:深度优先遍历离不开栈、广度优先遍历离不开队列。

m0_73755059的博客 1860

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

#leetcode#

核心原理:本质是「特殊26进制转十进制」,Excel列名是「无0的26进制」,每位取值范围1-26(对应A-Z)// ✅ 初始化位权值,代表当前位的权重(个位=26⁰=1、十位=26¹=26、百位=26²=676...)// 2. (n & -n) == n:验证二进制中「仅有1个1」,符合2的幂的核心特征。// ✅ 关键操作【核心】:先减1,将「无0的26进制」转为「标准0-25的26进制」/** 压栈操作:将元素x推入栈顶,核心是「反转队列顺序」适配栈的LIFO特性 */

wnaan的博客 1113

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

​LeetCode解法汇总889. 根据前序和后序遍历构造二叉树

前序遍历中,第一个是根结点A,第二个则是子树的根结点B。这时候分两种场景,如果存在左子树,则可以根据B在后序遍历中的位置进行分割成两部分。找到子树B也就是2在postorder中的位置,就可以分成两部分,第一部分在preorder中是[2,4,5],在postorder中是[4,5,2]。第二部分在preorder中是[3,6,7],在postorder中是[6,7,3]。这题和105,106题差不多,仍然是不断构建前序和后序匹配的区间进行生成。是同一棵树的后序遍历,重构并返回二叉树。

分享+记录 652

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LeetCode 145. 二叉树的后序遍历【c++/java详细题解】

目录1、题目2、思路13、c++代码4、java代码5、思路26、c++代码7、java代码 1、题目 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 2、思路1 (递归) O(n)O(n)O(n) 给定一个二叉树,返回它的 后序 遍历。 样例: 如样例所示,该二叉树的后序遍历为res = [9,5,7,4,3],下面来讲解递归的

林深不见鹿 的博客 2193

LeetCode_二叉树

记录经典二叉树算法题

qq_43563660的博客 845

LeetCode-145. 二叉树的后序遍历(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 517

常用遍历二叉树算法和LeetCode题实战汇总

目录 二叉链表存储二叉树 前序遍历 中序遍历 后序遍历 层序遍历 由遍历手段确定二叉树 小试牛刀:LeetCode最大层内元素和 二叉链表存储二叉树 typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 后面就直接用了 前序遍历 规则: 如果...

沉迷单车的追风少年 1129

LeetCode-144. 二叉树的前序遍历(java)

金三银四,又到了刷题月。有时间的话,希望大家还是尽量刷起来咯。帮助往往不是直接体现出来的,但会让你对很多东西的底层实现了解的更深刻。

**My Coding Family** 887

牛客 二叉树 LeetCode105 从前序与中序遍历序列构造二叉树

题目描述 二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。 输入描述: 两个字符串,其长度n均小...

Recusant 429

LeetCode-题目详解(四):二叉树(Tree)【遍历方式(前序、中序、后序、层序)、属性(对称、深度、平衡、路径)、修改与构造(翻转、合并)、公共祖先问题、二叉树之间的关系(相同、子树)】

给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示:进阶:递归算法很简单,你可以通过迭代算法完成吗?递归方法: 94-二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示:进阶: 递归算法很简单,你可以通过迭代算法完成吗? 145-二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。示例: 进阶: 递归算法很简单,你可以通过迭代算

u013250861的博客 1627

leetcode_二叉树的前序遍历、中序遍历、后序遍历、层次遍历--递归/非递归实现 & C++11新特性 emplace

题目: 专题链接:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/x63shc/ 前序遍历:https://leetcode-cn.com/leetbook/read/data-structure-binary-tree/xeywh5/ 中序遍历: 后序遍历: 层次遍历: 思路: 首推很不错的文章:https://leetcode-cn.com/problems/binary-tree-preorder.

Happy_Yu_Life的博客 355

Java二叉树

代码随想录一刷(2024-01-23 ~ 2024-01-26)

m0_73165551的博客 1778

[leetcode javascript]1029. 两地调度(贪心)和 144. 二叉树的前序遍历(四种方法)、94. 二叉树的中序遍历(递归×2、非递归、莫里斯遍历)、145. 二叉树的后序遍历

目录 1029. 两地调度(贪心) 144. 二叉树的前序遍历 方法一:借助额外函数递归 方法二:递归 方法三:迭代 方法四:莫里斯遍历 94. 二叉树的中序遍历 方法一:递归(借助额外的函数) 方法二:递归 方法三:非递归 方法四:莫里斯遍历 145. 二叉树的后序遍历 方法一:迭代 方法二:莫里斯遍历 方法三:按后序遍历的思路走(用到栈,Map类) 方法四:按...

hhhhhy 592
上一篇: 25、leetcode二叉搜索树迭代器、二叉树的中序遍历
下一篇: 27、leetcode使括号有效的最少添加、设计一个支持增量操作的栈
秋田狗子
博客等级 码龄7年 25粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值