LeetCode 144. 二叉树的前序遍历

144. 二叉树的前序遍历 给定一个二叉树,返回它的前序遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ... 阅读详情

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

示例:

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

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

tips : 非递归法,使用栈,先压右子节点,再压左子节点。

class Solution {
public:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> res;
        if(root == NULL) {
            return res;
        }
        stack<TreeNode*> st;
        st.push(root);
        while(!st.empty()) {
            TreeNode* node = st.top();
            st.pop();
            res.push_back(node->val);
            if(node->right != NULL) {
                st.push(node->right);
            }
            if(node->left != NULL) {
                st.push(node->left);
            }
        }
        return res;
    }
};
【简单】力扣算法题解析LeetCode144:二叉树的前序遍历 本文介绍了一种优化的迭代方法来实现二叉树的前序遍历。通过使用栈来模拟递归过程,优先访问根节点后深入左子树,并延迟处理右子树以减少栈深度。代码采用Java实现,选择ArrayList存储结果和ArrayDeque作为栈,确保高效执行。关键优化包括避免存储空节点和仅在必要时缓存右子树。该方法在时间和空间复杂度上均表现优异,适合处理大规模树结构。 阅读详情

相关推荐

Leetcode——144,二叉树前序遍历

/** * \* Created: liuhuichao * \* Date: 2019/8/21 * \* Time: 27:39 PM * \* Description: 二叉树的前序遍历 : 前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树 * \ * 给定一个二叉树,返回它的 前序 遍历。 * <p> *  示例: * &l...

我们的征途是星辰大海 379

【力扣】给定一个二叉树,返回它的前序遍历

给定一个二叉树,返回它的前序遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶:递归算法很简单,你可以通过迭代算法完成吗? 分析: 对于这类问题,把它直接看成只有三个节点(根节点,左子树,右子树)的树,不需要展开,直接调用。 先建立两个list里面的类型是Integer包装类型,一...

萌萌咚咚的博客 1954

leetcode 144(二叉树的前序遍历)

水题一道,题目如下 给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 题解 1. 递归 import java.util.ArrayList; /** * Definition for a binary tree ...

ayang818 's blog 317

刻意练习:LeetCode实战 -- 二叉树的前序遍历

背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历、中序遍历、后序遍历以及层次遍历,而LeetCode也有二叉树的前序遍历题目,故一起写了。 题目 题号:144 难度:中等 https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ 给定...

老马的程序人生 954

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 578

MaxENT生态位模型实战:从数据准备到论文发表的完整指南

本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。

tensor9flow的博客 301

Leetcode——144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路: 用栈(Stack)的思路来处理问题。 前序遍历的顺序为根-左-右,具体算法为: 把根节点push到栈中 循环检测栈是否为空,若不空,则取出栈顶元素,保存其值 看其右子节点是否存在,若存在则push到栈中 看其左子节点...

IT荻的博客 600

Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置)

本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。

weixin_29200741的博客 328

leetcode144. 二叉树的前序遍历(迭代)

给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * Tree

weixin_44560620的博客 175

2. Netty使用JSerialComm进行串口读取(二)

现在开始处理这些问题 第一个问题:串口读取超时异常一路传播到最后也没有处理。 ​ 第二个问题:即使处理了该异常,程序仍然退出,这不能满足一些实际使用要求需求。该问题与设置很长的读取超时时间没关系,无论多长到时间后总会退出。

s3c2410的博客 2461

Ubuntu技巧-Ubuntu远程访问之SSH反向代理

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、互联网和自媒体。要把内网的一台的Ubuntu服务器让外面也能访问,总共有三种可行的方案,前面已经介绍了两种方式,今天就来介绍更健壮稳定的方式——ssh反向代理。大概的框架图如下,今天就从服务器购买到设置,手把手的教程,让你花费100块以内,就拥有一个强大的「云服务器」。

可夫小子的频道 1151

leetcode 144. 二叉树的前序遍历

-

夜空像是一片紫水潭,星星是些不动的大亮点,夜风是些浅蓝色的流线,云端传来喧嚣的声音。 1295

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

二叉树OJ题:LeetCode--144.二叉树的前序遍历

LeetCode--144.二叉树的前序遍历:使用C语言递归实现的详细解题思路(分步骤详细介绍),你也快来试试吧!

Yikefore的博客 645

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。

TxNet 1751

【软考】数据库系统工程师备考指南(一)

目录一、数据库系统工程师简介二、考试要求三、考试目标四、考试范围(一)信息系统知识(二)数据库系统设计与管理 一、数据库系统工程师简介 数据库系统工程师考试属于全国计算机技术与软件专业技术资格(水平)考试(简称计算机软件水平资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。笔试安排在一天之内。 2022 年数据库系统工程

邓邓子的博客 3859

Leetcode 144. 二叉树的前序遍历 C++

Leetcode 144. 二叉树的前序遍历 题目 给定一个二叉树,返回它的 前序 遍历。 测试样例 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 题解 递归实现,详细过程见代码 代码 vector<int> ans; void search(TreeNode* root){ if(root == NULL) return; ans.push_back(root->

weixin_43750513的博客 178

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

力扣(LeetCode)144. 二叉树的前序遍历

思路: 整体和94题类似,借助栈进行操作。 前序遍历:根左右 具体操作: (假设初始根结点不为空,申请栈空间,这里用Stack数组代替,下标top初始为-1) 先把根结点放入Stack中,这样top!=-1,就可以进行while循环了 ①在第一遍while循环中,先把栈中的元素(根节点)取出来记为p,并打印(或保存),然后判断其右孩子结点是否存在,存在则放入Stack中,随后再检测其左孩子结点是...

Pwnpanda的博客 741

pscad IEEE标准系统搭建说明

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

力扣 144:二叉树前序遍历的优雅实现

本文以力扣144题为例,详细讲解了二叉树前序遍历的递归实现方法。前序遍历遵循"根→左→右"的顺序,通过递归可以优雅实现:先处理当前根节点,再递归处理左右子树。文章强调递归设计的三个关键步骤:明确函数意义、设置边界条件、编写递归逻辑,并提供了C++代码示例。同时指出递归思维的核心是信任函数功能,不必纠结调用细节。该方法可以迁移到N叉树等更复杂的树形结构遍历中,是算法学习的重要基础。

软件科学-郝学胜 657

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode第144题_二叉树的前序遍历

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

qq_40263592的博客 1036

【leetcode】144.二叉树的前序遍历

【leetcode】144.二叉树的前序遍历题目思路代码 题目 leetcode原题链接 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 思路 递归 递归函数参数:当前节点node,用于存放结果的数组ans 确定递归返回条件:当前节点为空,直接return 单层递归逻辑:前序遍历是’根

laplacepoisson的博客 660

144. 二叉树的前序遍历 LeetCode 力扣

给定一颗二叉树,返回他的前序遍历 解决思路: 遇到二叉树问题,如果深度不深,则可以直接用二叉树的递归遍历。 如果深度预计很深的话,可以用非递归遍历 public List<Integer> preorderTraversal(TreeNode root) { if (root == null) { return Collections.emptyList(); } List<Integer> re.

ZhaoXia_hit的博客 202

LeetCode 144二叉树的前序遍历

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

XBlog 243

Leetcode144. 二叉树的前序遍历

Leetcode144. 二叉树的前序遍历 递归: class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if (root == null) { return result; } // 借助栈完成二叉树的

Loser_you的博客 175
上一篇: LeetCode 145. 二叉树的后序遍历
下一篇: Leetcode 518. 零钱兑换 II
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值