【LeetCode刷题(数据结构)】:二叉树的前序遍历

news2024/10/5 19:09:57

在这里插入图片描述

给你二叉树的根节点root 返回它节点值的前序遍历
示例1:
在这里插入图片描述
输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
示例 4:
在这里插入图片描述
输入:root = [1,2]
输出:[1,2]
示例 5:
在这里插入图片描述
输入:root = [1,null,2]
输出:[1,2]

方法:递归

思路与算法
首先我们需要了解什么是二叉树的前序遍历:按照访问根节点——左子树——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。
定义 preorder(root) 表示当前遍历到 root 节点的答案。按照定义,我们只要首先将 root 节点的值加入答案,然后递归调用 preorder(root.left) 来遍历 root 节点的左子树,最后递归调用 preorder(root.right) 来遍历 root 节点的右子树即可,递归终止的条件为碰到空节点
代码


```cpp
void preorder(struct TreeNode* root, int* res, int* resSize) {
    if (root == NULL) {
        return;
    }
    res[(*resSize)++] = root->val;
    preorder(root->left, res, resSize);
    preorder(root->right, res, resSize);
}

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    int* res = malloc(sizeof(int) * 2000);
    *returnSize = 0;
    preorder(root, res, returnSize);
    return res;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计 基于Java的敬老院管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…

基于pid控制的小功率直流电机调速

摘 要 随着电子技术的高度发展 ,直流电机测控逐步从模拟化向数字化转变。完全由硬件电路实现的直流电机测控系统 ,电路复杂 ,调整困难且可靠性不高 ,缺乏控制的灵活性。在工业控制中 ,按偏差的比例P、积分I和微分D进行控制的PID调节器现在得到广泛的应用。在小型微型 计算机用…

LoRa模块的通信范围与其他无线通信技术的比较

在物联网(IoT)和远程传感应用中,选择合适的无线通信技术至关重要。LoRa(低功耗广域网)模块因其低功耗、远距离通信和广覆盖范围而备受关注。本文将探讨LoRa模块的通信范围,并与其他无线通信技术如Wi-Fi和蓝…

Leetcode刷题详解——盛最多水的容器

1.题目链接:盛最多水的容器 2.题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容…

基于单片机的智能交通灯控制系统设计

目录 摘 要...................................................................................... 2 第一章 绪论........................................................................ 5 1.1 研究课题背景...................................................…

伪元素和伪类的区别和作用?

什么是伪元素和伪类 伪元素 伪元素(pseudo-elements)是CSS中的一种选择器,用于选择元素的特定部分而不是整个元素本身。伪元素允许你在已选择的元素内部创建或修改内容,而无需在文档结构中添加额外的HTML元素。伪元素的语法以::&…

基于局部结构特征的图像匹配

目录 第一章 绪论........................................................................ 6 1.1 研究课题背景....................................................... 6 1.2 图像匹配技术国内外发展现状........................... 8 1.3 课题研究的目的......…

FBI分享AvosLocker勒索软件的技术细节和防御建议

导语 近日,美国联邦调查局(FBI)和网络安全与基础设施安全局(CISA)联合发布了一份关于AvosLocker勒索软件的技术细节和防御建议的联合网络安全公告。该公告详细介绍了AvosLocker勒索软件的攻击方式和使用的工具&#xf…

MFF论文笔记

论文名称:Improving Pixel-based MIM by Reducing Wasted Modeling Capability_发表时间:ICCV2023 作者及组织:上海人工智能实验室,西门菲沙大学,香港中文大学 问题与贡献 MIM(Model Maksed Model)方法可以分为两部分…

WSL 配置 Linux

WSL 配置 Linux Windows 启动 Linux 子系统 控制面板 -> 程序和功能, 将 适用于 Linux 的 Windows 子系统 勾选。 安装 Terminal 在 Microsoft Store 市场上搜索 Terminal 安装 Windows Terminal。 安装 编译工具链 sudo apt update # 更新软件包 sudo apt i…

MyBatis自定义映射resultMap,处理一对多,多对一

1、自定义映射resultMap 复习:查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射 关系 resultType:自动映射,用于属性名和表中字段名一致的情况 (或设置了下划线映射为驼峰&#x…

qemu基础篇——VSCode 配置 GDB 调试

文章目录 VSCode 配置 GDB 调试安装 VSCode 插件调试文件创建调试配置配置脚本qemu 启动脚 启动调试报错情况一报错情况二报错情况三 调试界面运行 GDB 命令查看反汇编断点查看内核寄存器查看变量参考链接 VSCode 配置 GDB 调试 上一节中直接使用 GDB 命令行调试,本…

基于海洋捕食者优化的BP神经网络(分类应用) - 附代码

基于海洋捕食者优化的BP神经网络(分类应用) - 附代码 文章目录 基于海洋捕食者优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.海洋捕食者优化BP神经网络3.1 BP神经网络参数设置3.2 海洋捕食者算法应用 4…

JVM字节码指令详解

文章目录 前言一、JVM字节码指令概述1. 什么是JVM字节码指令:2. 字节码指令的作用:3. 字节码指令的分类: 二、字节码指令的种类1. 加载和存储指令2. 算术指令3. 类型转换指令4. 对象和数组操作指令5. 操作数栈管理指令6. 控制转移指令7. 方法…

在emacs中,设置latex的主文档

文档: chapter1.tex chapter2.tex main.tex 在chapter1.tex中,先按下 ctrlc ctrln,再按下ctrlc ctrla,在下方的提示框中输入主文档。

链路层3:VLAN的配置与分析

VLAN的帧格式 VLAN数据帧的传输 在以太网中,加了标签tag的VLAN数据帧我们叫做V-MAC帧,普通的数据帧我们叫做MAC帧。对于主机来说,它只认识普通的MAC帧;对于主机,V-MAC帧和MAC帧它都认。所以,实际上的V-MAC…

docker中使用GPU+rocksdb

配置环境 delldell-Precision-3630-Tower  ~  lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focaldelldell-Precision-3630-Tower  ~  nvcc --version nvcc: NVIDIA (R) Cuda comp…

如果C盘满了怎么办

相信这个问题是困扰了很多人的。 1、清理 1.1清理缓存 这种适合一些小白,清理C盘中的缓存,但是治标不治本。上正文 (1)打开电脑,输入winr (2)输入%temp% 该文件目录下全是缓存文件可以删除&…

2023年京东双11红包领取入口口令活动时间是从什么时候开始到几月几号结束如何领取2023京东双十一红包优惠券?

2023年京东双11红包领取活动时间是什么时候? 京东双11红包领取活动时间将于2023年10月23日00:00开始至11月11日23:59结束; 2023年京东双11红包领取入口在哪里如何天天免费领取? 2023年京东双11红包口令「红包到手677」,请在活动…

完美解决lftp遇到put: Access failed: 553 Could not create file.

目录 一、问题 二、原因 三、解决方法 一、问题 put: Access failed: 553 Could not create file. 二、原因 (1)没有关闭SeLinux (2)linux默认安装vsftp服务之后只允许匿名用户的访问和下载,不支持上传。 三、解决方…