【每日OJ —— 144. 二叉树的前序遍历】

每日OJ —— 144. 二叉树的前序遍历

  • 1.题目:144. 二叉树的前序遍历
  • 2.方法讲解
    • 2.1.算法讲解
    • 2.2.代码实现
    • 2.3.提交通过展示

1.题目:144. 二叉树的前序遍历

在这里插入图片描述

2.方法讲解

2.1.算法讲解

1.首先如果在每次每个节点遍历的时候都去为数组开辟空间,这样的效率太低了,所以我们优化,通过直接统计需要遍历的二叉树的节点的个数,来作为数组开辟空间的大小,这样就及其有效的节省每次遍历都去开辟依次空间的繁琐操作。
2.其次再实现前序遍历的函数接口,需要注意的是前序遍历的顺序是:根—>左子树—>右子树,前序遍历的数组存储数据时候的下标i需要用指针来接收,否则数组的i值下标在左右递归会累加导致越界。
3.最后就是实现前序遍历后返回数组的函数接口。

2.2.代码实现

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
/*** Note: The returned array must be malloced, assume caller calls free().*///统计二叉树节点个数
int TreeSize(struct TreeNode* root)
{return root==NULL?0:TreeSize(root->left)+TreeSize(root->right)+1;
}//前序遍历
void PrevOrder(struct TreeNode* root, int* a, int* pi)
{if(root==NULL){return;}a[(*pi)++]=root->val;//需要指针来接受,否则数组的i值下标在左右递归会累加导致越界PrevOrder(root->left,a,pi);PrevOrder(root->right,a,pi);
}//返回存储二叉树节点的数组
int* preorderTraversal(struct TreeNode* root, int* returnSize) {int n=TreeSize(root);//接受二叉树节点作为开辟空间的数组的大小int* a=(int*)malloc(sizeof(int)*n);int i=0;*returnSize=n;//存储数组大小的指针PrevOrder(root,a,&i);//对数据进行前序遍历return a;//返回前序遍历后的数组
}

2.3.提交通过展示

在这里插入图片描述

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

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

相关文章

steam搬砖项目到底能不能做?

在Steam的世界里,有一款引人注目的游戏——《CSGO》游戏设备和配件的搬运项目。它就像一个桥梁,连接着全球的游戏世界,为玩家们提供着精彩的设备和配件。原则上,这是一个低买高卖的过程,通过汇率差来赚取利润。比如&am…

新知识-Tuple元组的使用

文章目录 前言一、tuple元组是什么?二、解决方法总结 前言 这次碰到一个需求,大致需要把表A中的字段1和字段2作为共同的表去查表B,并且一次性需要查多条,一开始是想的是根据字段1和字段2去查然后循环多次,但是这样反复…

从PDF和图像中提取文本,以供大型语言模型使用

想法 大型语言模型已经席卷了互联网,导致更多的人没有认真关注使用这些模型最重要的部分:高质量的数据!本文旨在提供一些有效从任何类型文档中提取文本的技术。 Python库 本文专注于Pytesseract、easyOCR、PyPDF2和LangChain库。实验数据是一…

C 中的结构 - 存储、指针、函数和自引用结构

0. 结构体的内存分配 当声明某种类型的结构变量时,结构成员被分配连续(相邻)的内存位置。 struct student{char name[20];int roll;char gender;int marks[5];} stu1; 此处,内存将分配给name[20]、roll、gender和marks[5]。st1这…

zabbix 监控

zabbit 监控 非常成熟的监控软件。 运维人员,尽快系统服务器的状态,网站的流量,服务进程的运行状态。 保证整个集群的工作正常。7*24 zabbix是什么: web界面提供的一种可视化监控服务软件。 分布式的方式系统监控以及网络监控…

ts学习05-typeScript中的类

类的定义 class Person {name: string; //属性 前面省略了public关键词constructor(n: string) {//构造函数 实例化类的时候触发的方法this.name n;}run(): void {console.log(this.name);} } var p new Person("张三");p.run();class Person {name: string;//…

zxing

引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>jav…

Vue学习笔记-命名路由

作用 简化路由的跳转,适合在路径过长的时候使用&#xff08;例如&#xff1a;path:/a/b/c/d/e/f/...&#xff09; 如何理解&#xff1a;相当于给路径起别名 使用方式 给路由命名 //创建一个路由器 const router new VueRouter({routes:[......{path:/home,component:HomeV…

JOSEF约瑟 剩余电流保护器 CLJ3-100A+LH30 导轨安装

CLJ3系列剩余电流动作继电器 系列型号&#xff1a; CLJ3-100A剩余电流动作继电器 CLJ3-250A剩余电流动作继电器 CLJ3-400A剩余电流动作继电器 CLJ3-630A剩余电流动作继电器 LH30剩余电流互感器 LH80剩余电流互感器 LH100剩余电流互感器 LH140剩余电流互感器 一、产品概…

特征融合12种经典魔改方案汇总,附配套模型和代码

特征融合&#xff08;Feature Fusion&#xff09;是深度学习中的一种重要技术&#xff0c;它可以帮助模型更好地理解数据的内在结构和规律&#xff0c;提高模型的性能和泛化能力。另外&#xff0c;特征融合还可以提高模型的分类准确率&#xff0c;减少过拟合风险&#xff0c;帮…

Java核心知识点整理大全25-笔记

目录 25. Hadoop 25.1.1. 概念 25.1.2. HDFS 25.1.2.1. Client 25.1.2.2. NameNode 25.1.2.3. Secondary NameNode 25.1.2.4. DataNode 25.1.3. MapReduce 25.1.3.1. Client 25.1.3.2. JobTracker 25.1.3.3. TaskTracker 25.1.3.4. Task 25.1.3.5. Reduce Task 执行…

主机安全-WindowsLinux的SSH安全加固

信息安全相关 - 建设篇 第三章 主机安全-Linux的SSH安全加固 信息安全相关 - 建设篇系列文章回顾下章内容主机安全-Linux的SSH安全加固前言Windows openssh相关命令&#xff0c;安装openssh获取openssh命令Windows openssl相关命令&#xff0c;安装Git获取openssl命令修复 CVE-…

CSS特效024:旋转的通透立方体

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

15分钟了解国外Lead广告联盟,为什么做国外广告联盟要用到指纹浏览器?

说到国外Lead广告联盟&#xff0c;可能很多人会问这是啥&#xff1f;其实呢&#xff0c;作为搞外贸的&#xff0c;如果你想增加你的收入&#xff0c;做国外广告联盟也是不错的选择&#xff0c;只要你有正确的方法和策略&#xff0c;就能够成功赚取丰厚的佣金。今天龙哥我就给大…

101.套接字-Socket网络编程3

目录 1.字节序 主机字节序&#xff08;小端&#xff09; 网络字节序&#xff08;大端&#xff09; 字节序转换函数 2.IP地址转换函数 3.套接字地址结构 通用 socket 地址结构 专用 socket 地址结构 Socket套接字的目的是将TCP/IP协议相关软件移植到UNIX类系统中。设计…

根文件系统简介

一. 根文件系统简介 根文件系统也叫做rootfs。大家学习STM32的W25Q256、SD卡的时候&#xff0c;接触过 FATFS文件系统。Rootfs是否 &#xff1f; FATFS。Rootfs文件系统不同于 FATFS。 Linux内核源码 /fs目录下就存放了类似FATFS系统的很多不同格式的文件系统。所以&#xf…

Python 运行脚本错误 OSError: [Errno 8] Exec Format Error

Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时&#xff0c;有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。 当脚本直接运行而不是通过正确的解释器时&#xff0c;会引发 Exec 格式错误问题。 如果脚本文件…

前后端联调

JavaWenb开发 pom.xml 文件 配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

ROS2 Gazebo:三维物理仿真平台

介绍 Gazebo是ROS系统中最为常用的三维物理仿真平台&#xff0c;支持动力学引擎&#xff0c;可以实现高质量的图形渲染&#xff0c;不仅可以模拟机器人及周边环境&#xff0c;还可以加入摩擦力、弹性系数等物理属性。 比如我们要开发一个火星车&#xff0c;那就可以在Gazebo中…

Leetcode 2661. 找出叠涂元素

Leetcode 2661. 找出叠涂元素题目 给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1&#xff0c;m * n] 内的 所有 整数。从下标 0 开始遍历 arr 中的每个下标 i &#xff0c;并将包含整数 arr[i] 的 mat 单元格涂色。请你找出 a…