【每日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.提交通过展示

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux基础五:linux 系统(进程状态2:)

linux 系统 一.进程状态:1.睡眠状态(sleep):2.磁盘休眠状态(disk sleep):3.停止状态(stoped --- T):4.死亡状态:5.控制状态(t) 二.僵尸进程和孤儿进程:1.僵尸状态:2.孤儿…

同城服务足浴按摩软件系统开发方案;

足浴按摩软件是一款线上系统小程序,旨在方便用户在线预约按摩师、选择适合自己的服务项目和时间,并在家中或指定地点享受按摩服务。这款上门按摩小程序为用户提供了便利和个性化的按摩服务体验。 用户可以通过手机随时随地通过足浴按摩软件预约按摩师&am…

【java】编译时bug 项目启动前bug合集

文章目录 1. jdk8中 Optional orElseThrow 编译时报错java: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出2. 启动项目时提示 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configurati…

【每日OJ —— KY11 二叉树遍历】

每日OJ —— KY11 二叉树遍历 1.题目:KY11 二叉树遍历2.解法2.1.算法讲解2.2.代码实现2.3.提交通过展示 1.题目:KY11 二叉树遍历 2.解法 2.1.算法讲解 1.首先需要创建二叉树结构。 2.其次,根据题目根据题目遍历的顺序要求来实现构建二叉树的…

基于mps的pytorch 多实例并行推理

背景 大模型训练好后,进行部署时,发现可使用的显卡容量远大于模型占用空间 。是否可以同时加载多个模型实例到显存空间,且能实现多个实例同时并发执行?本次实验测试基于mps的方案,当请求依次过来时,多个相…

【分布式事务】Seata 开源的分布式事务解决方案

1. 什么是seata Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 2. seata发展历程 阿里巴巴作为国内最早一批进行应用分…

使用 CSS Grid 的响应式网页设计:消除媒体查询过载

文章目录 前言介绍 CSS Grid让我们开始吧实现高级响应性1、Repeat() 2、Auto-fit3、Minmax()结论 前言 你是否厌倦了在实现响应式网站时需要管理多个媒体查询?说再见复杂的代码,拥抱更简单的解决方案吧:CSS Grid。 在这篇文章中,…

AI时代架构师之路:技术、洞察和创新的完美融合

随着人工智能技术的飞速发展,我们正置身于一个由数据驱动的时代。在这个充满无限可能性的AI时代,架构师成为设计和构建先进系统的关键角色。然而,在追逐技术的同时,架构师需要修炼一系列综合素养,使其在技术、业务和伦…

苍穹外卖——删除购物车信息

1. 删除购物车中一个商品 1.1 产品原型 1.2 接口设计 1.3 数据模型 shopping_cart表: -- auto-generated definition create table shopping_cart (id bigint auto_increment comment 主键primary key,name varchar(32) null comment 商品名称…

Jmeter接口自动化测试断言之Json断言

json断言可以让我们很快的定位到响应数据中的某一字段,当然前提是响应数据是json格式的,所以如果响应数据为json格式的话,使用json断言还是相当方便的。 还是以之前的接口举例 Url: https://data.cma.cn/weatherGis/web/weather/weatherFcst…

【LeetCode】 160. 相交链表

相交链表 题目题解 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&am…

python实现决策树可视化Graphviz和plot_tree

文章目录 效果展示graphviz安装教程实例演示数据集介绍属性说明划分训练集、测试集graphviz可视化plot_tree效果展示 graphviz安装教程 实例演示 数据集介绍 Wine葡萄酒数据集是来自UCI上面的公开数据集,这些数据是对意大利同一地区种植的葡萄酒进行化学分析的结果,这些葡…

C++-设计一个特殊类

目录 一.设计一个类,不能被拷贝 二.设计一个类只能在堆上创建对象 三.设计一个类只能在栈上创建对象 四. 请设计一个类,不能被继承 五.请设计一个类,只能创建一个对象(单例模式) 1.单例模式: 2. 饿汉模式 一.设计一个类&#x…

服务器巡检表

《服务器巡检表》检查项: 1、系统资源 2、K8S集群 3、Nginx 4、JAVA应用 5、RabbitMQ 6、Redis 7、PostgreSQL 8、Elasticsearch 9、ELK日志系统 获取软件开发全套资料进主页。

Python实现FA萤火虫优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

shell编程系列(8)-使用sed处理文本

文章目录 引言sed用法详解在文本中定位打印文本替换文本删除文本新增文本 结语 引言 在日常工作学习中我们都会遇到要编辑文本的场景,例如我们要用vim或者nano等命令去编辑代码,处理文本文件等,这些命令的特点都是需要我们进行交互式的实时处…

Set系列的集合

无序: 存取的顺序不一样 不重复:可以去重 无索引:不能使用普通for进行遍历,也不能通过索引获取元素 Set集合的实现类 HashSet:无序,不重复,无索引 LinkedHashSet:有序&#xff…

【报名】2023产业区块链生态日暨 FISCO BCOS 开源六周年生态大会

作为2023深圳国际金融科技节系列活动之一,由深圳市地方金融监督管理局指导,微众银行、金链盟主办的“2023产业区块链生态日暨FISCO BCOS开源六周年生态大会”将于12月15日下午14:00在深圳举办。 今年的盛会将进一步升级,以“FISCO BCOS和TA的…

自定义函数中的(int*a,int*b)与(int*a,int n)

事实上第一种更安全,不会因越界发生占位,从而导致错误。

三个方法,rar格式转换为zip压缩包

今天和大家分享三个rar压缩包改成zip格式的方法,希望能够帮助到大家! 方法一: 直接修改rar压缩包的后缀名变为zip,就可以修改压缩包文件格式了 方法二: 先将rar压缩包解压出来,然后再将解压出的文件进行…