使用迭代法对二叉树进行前序遍历——Leetcode系列(七)

【力扣题解】P94-二叉树的中序遍历-Java题解 阅读详情

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1
    \
     2
    /
   3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

My Answer

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        Stack<TreeNode> stack = new Stack<TreeNode>();
        List<Integer> list = new ArrayList<Integer>();
        if(root == null){
            return list;
        }
        stack.push(root);
        while(!stack.empty()){
            TreeNode top = stack.pop();
            list.add(top.val);
            if(top.right != null){
                stack.push(top.right);
            }
            if(top.left != null){
                stack.push(top.left);
            }
        }
        return list;
    }
}

题目来源:https://oj.leetcode.com/problems/binary-tree-preorder-traversal/

保姆级避坑指南:在Ubuntu 22.04上从零编译Autoware.universe(含ROS2 Humble和CUDA配置) 本文提供了一份详细的Autoware.universe编译指南,涵盖Ubuntu 22.04系统优化、ROS2 Humble安装避坑、CUDA配置及Demo运行技巧。通过分步操作和实战经验,帮助开发者高效完成环境搭建,避免常见错误,提升自动驾驶开发效率。 阅读详情

相关推荐

企业微信获取code,URL详解

“https://open.weixin.qq.com/connect/oauth2/authorize?”+ “appid=”企业ID “&redirect_uri=”重定向路径+ “&agentid=”小程序AgentId+ “&response_type=code&scope=snsapi_userinfo&state=123&conn...

weixin_44804985的博客 8734

二叉树的迭代遍历

那么再看看中序遍历,中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点(也就是在把节点的数值放进result数组中),这就造成了。分析一下为什么刚刚写的前序遍历的代码,不能和中序遍历通用呢,因为前序遍历的顺序是中左右,先访问的元素是中间节点,要处理的元素也是中间节点,所以刚刚才能写出相对简洁的代码,前序遍历是中左右,每次先处理的是中间节点,那么先将根节点放入栈中,然后将右孩子加入栈,再加入左孩子。因为这样出栈的时候才是中左右的顺序。

gyjllll的博客 508

基于ENVI5.6与SARscape的哨兵一号时序InSAR实战:从数据准备到PS/SBAS结果解译

本文详细介绍了基于ENVI5.6与SARscape软件,利用哨兵一号(Sentinel-1)卫星数据,进行PS-InSAR与SBAS-InSAR时序分析,以监测地表形变的完整实战流程。内容涵盖从数据下载、软件配置、预处理、核心处理步骤到结果解译与质量评估,重点解析了PS与SBAS方法的关键参数设置、常见问题及解决方案,旨在帮助用户掌握从数据准备到成果分析的完整技术链条。

oo7890的博客 634

一遍看懂面试算法——二叉树

此时我们用迭代法写出了二叉树的前后中序遍历,大家可以看出前序和中序是完全两种代码风格,并不像递归写法那样代码稍做调整,就可以实现前后中序。这是因为前序遍历中访问节点(遍历节点)和处理节点(将元素放进result数组中)可以同步处理,但是中序就无法做到同步!

qq_52458633的博客 578

从零搭建智能车竞赛卡丁车:自动驾驶科目中的锥桶识别与路径规划实战教程

本文提供了一份从零搭建智能车竞赛卡丁车的实战教程,重点解析了自动驾驶科目中的核心环节:锥桶识别与路径规划。内容涵盖硬件选型、传感器部署、基于单目视觉的识别算法,以及适用于嵌入式平台的轻量级路径规划与跟踪策略,旨在帮助参赛者与爱好者系统掌握关键技术,完成稳定可靠的自动驾驶系统搭建。

lg888的博客 1166

dreamerv3复现教程

由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。

无人机飞啊飞啊飞 2837

LeetCode Week 4

94. Binary Tree Inorder Traversal Given a binary tree, return the inorder traversal of its nodes’ values. Example: Follow up: Recursive solution is trivial, could you do it iteratively? solutions: 本题...

Xiouzai_的博客 215

RK3568平台开发系列讲解:Linux wifi的调试

查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。

内核笔记 167

【二叉树】LeetCode.144:二叉树的前序遍历(小细节把握)

🔍前言:二叉树的遍历顺序有:1.前序:根->左子树->右子树。2.中序:左子树->根->右子树。3.后序:左子树->右子->树。4.层序:一层一层的遍历。这里我们讲二叉树的前序遍历。

路虽远,行则将至!事虽难,做则必成! 7371

抖音无水印视频爬虫实战:从抓包分析到批量下载指定用户作品

抖音作为当前最受欢迎的短视频平台,拥有海量的优质内容。很多用户希望备份自己或他人的作品,但抖音官方并未提供批量下载功能,且直接下载的视频带有平台水印。本文将带领大家从零开始,通过抓包分析、设备模拟、请求签名等核心技术,实现一个完整的抖音无水印视频爬虫系统。本文仅供技术学习和个人备份使用,请勿将爬取的内容用于商业用途或侵犯他人版权,爬取频率请控制合理范围内。目录一、前言二、技术栈概览三、准备工作3.1 环境搭建3.2 抓包分析步骤3.3 关键API发现四、核心技术解密4.1 X-Gorgon签名算法。

2201_76125261的博客 846

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

所有的reaxff模拟,如:氧化、腐蚀、热裂解、燃烧等模拟,均可采用此模拟框架,只需要更换data文件、势文件,代码中的control文件可以不写,电荷平衡文件也可以用reaxff替换。该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。如果需要系统学习反应势的模拟,可考虑报名培训课程。本文分享一个reaxff反应势的案例。in文件代码已经注释,以供参考。大家好,我是小马老师。

lammps_jiayou的博客 1966

【Hot100】LeetCode—105. 从前序与中序遍历序列构造二叉树

让前序的第一个元素作为中序的分割点。

weixin_44382896的博客 748

2025目标检测新方向:弱监督目标检测的最新论文研究与应用

2025目标检测新方向:弱监督目标检测的最新论文研究与应用 ,人工智能,计算机视觉,大模型,AI,本文聚焦2025年弱监督目标检测新方向,阐述其基础概念,包括弱监督学习定义、标注形式及面临的定位不准等挑战。介绍最新论文研究的多种算法,如基于点标注的算法等,还涉及相关模型、应用领域,以及评价指标、数据集、实现工具框架,分析未来趋势与补充挑战及解决方案,为该领域研究提供全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7万+

二叉树的层序遍历(迭代法和递归法)

在二叉树的相关操作中,层序遍历是一种重要的遍历方式,它按照二叉树的层次结构,从根节点开始,逐层地遍历节点,使得同一层的节点按照从左到右的顺序被访问。

Hhjhj255的博客 1931

OV9734 DATASHEET,完整规格书

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode第94题_二叉树的中序遍历

给定一个二叉树的根节点root,返回它的遍历。

qq_40263592的博客 1307

pscad IEEE标准系统搭建说明

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

二叉树中序遍历(递归法和迭代法(非递归法))——C++

1.2迭代法 迭代法是采用非递归方法实现二叉树的中序遍历,主要利用数据结构std::stack来实现,利用栈std::stack的先进后出特性依次压入待访问的节点,然后依次按照中序遍历顺序弹出和访问节点,确保每个节点有且仅有一次访问。 具体步骤如下: a1 先将所有父节点和左子节点依次压入栈; 这样做的目的是为了先弹出左子节点,再弹出父节点,可以在弹出左子节点的时候进行遍历,同时处理右节点,比如将右节点压入栈,这样就实现了先访问左节点,然后父节点,最后右子节点。a2 然后弹出一个节点,进行遍历; 此时弹出a

净无邪博客 2143

LeetCode刷题笔记:二叉树前序遍历、中序遍历、后序遍历和层序遍历 | 递归法 | 迭代法 | 统一迭代法 | 深度优先搜索 | 广度优先搜索

Problem:144. 二叉树的前序遍历Problem:94.二叉树的中序遍历Problem:145.二叉树的后序遍历Problem:102. 二叉树的层序遍历Problem:107. 二叉树的层序遍历 II二叉树的遍历方式有多种,毛毛张今天在这里结合代码随想录的教程来分享一下二叉树的多种遍历方式及代码实现深度优先遍历和广度优先遍历。

神马都会亿点点的毛毛张 1205

力扣刷题 二叉树的迭代遍历

题干给你二叉树的根节点root,返回它节点值的遍历。

never1624的博客 1795

二叉树的中序遍历问题的具体思路 递归法 迭代法 莫里斯算法(附完整代码)

本文将主要围绕以下问题进行讨论:二叉树的中序遍历。本文将分别以三种方法【递归】【迭代】【莫里斯算法】来解决这一问题(文章末尾附完整代码)

bufangbufang的博客 2763

七、二叉树(5):二叉树的层序遍历

学会二叉树的层序遍历,可以一口气打完以下十题: 102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的前序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 104.二叉树的最大深度 111.二叉树的最小深度 在之前写过这篇文章二叉树:层序遍历登场!(opens new window),可惜当时只打了5个,还不够,再给我一次机会,我打十个! ...

努力努力努力 6135

DAY13||二叉树的递归遍历,迭代遍历,统一迭代法,层序遍历

二叉树需要掌握的内容图。

2301_79865280的博客 1461

代码随想录算法训练营Day11 | 二叉树的递归遍历、迭代遍历、统一迭代法、层序遍历

层序遍历的时候,判断是否遍历到单层的最后面的元素,如果是,就放进 result 数组中,随后返回 result 就可以了。依然采用层序遍历,只不过在单层遍历的时候需要记录一下本层的头部节点,然后在遍历的时候让前一个节点指向本节点。给你二叉树的根节点 root ,返回其节点值的 层序遍历(即逐层地,从左到右访问所有节点)。root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。(即从左到右,逐层遍历)。在二叉树中,一层一层的来遍历二叉树,记录一下遍历的层数就是二叉树的深度。

叽里呱啦大王的博客 1343

leetcode算法(94.二叉树的中序遍历)

leetcode算法(94.二叉树的中序遍历)

m0_61706299的博客 1052

leetcode-二叉树的层序遍历python实现

二叉树是每个节点最多有两个子树的树结构。二叉树的遍历有深度优先遍历(Depth-First-Search,DFS)和广度优先遍历(Breadth-First-Search,BFS)两类。深度优先遍历包括前序遍历、中序遍历、后续遍历;广度优先遍历也就是二叉树层序遍历。访问节点的顺序如下。 前序遍历:根节点,左子节点,右子节点 中序遍历:左子节点,根节点,右子节点 后序遍历:左子节点,右子节点,根节点 层序遍历:从上到下,从左至右依次遍历节点 以下将给出这层序遍历的python实现,分别对应leetc

wu2020的博客 1594

【Java】代码随想录二叉树02| 层序遍历、翻转二叉树、对称二叉树(一口气打十二个)

中我们讲到了二叉树的遍历方式包括深度优先遍历(前序、中序、后序)以及广度优先遍历即层次遍历,深度优先遍历既可以用迭代法,又可以用递归法来实现,而。本题遍历只能是“后序遍历”,因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等。①参数和返回值:参数是左子树节点和右子树节点(比较两颗子树),返回值类型为bool。DFS前序遍历(中左右):先交换左右孩子节点,再反转左子树,翻转右子树。比较左节点的左/右孩子和右节点的右/左孩子,都对称则返回true。左子树为空,右子树不为空——false;

weixin_43562105的博客 1171

94.二叉树的中序遍历- 力扣(LeetCode)

如果为空了,也就是root是空节点了,说明当前子树的左节点都已经遍历完了,可以开始将左节点值加到res中了,从stack中弹出最近遍历到的节点,将节点值加到res中后让root = root.right。但中序遍历要先存左节点,所以是一直遍历左节点直到左节点为空,然后从栈中弹出上一个节点,这个节点将是当前子树的最左节点,将该节点的值存到res中,然后再令root = root.right。进入 inorder(3),递归调用 inorder(3.left)(即 inorder(None)),返回。

2401_87004385的博客 1545

代码随想录算法训练营第十三天|二叉树理论基础|二叉树的递归遍历|二叉树的迭代遍历|二叉树的统一迭代法|二叉树的层序遍历

二叉树有两种主要的形式:满二叉树和完全二叉树; 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。可以说深度为k,有2^k-1个节点的二叉树。 完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。(有左子树可以,没有左子树,光有右子树的不是完全二叉树)

weixin_49494409的博客 2028
上一篇: 使用迭代法对二叉树进行后序遍历——Leetcode系列(六)
下一篇: 列表重新排序——Leetcode系列(八)
Hooting
博客等级 码龄17年 11粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值