Leetcode—剑指OfferII LCR 044.在每个树行中找最大值【中等】

2023每日刷题(二十三)

Leetcode—LCR 044.在每个树行中找最大值

在这里插入图片描述

DFS实现代码

/**
 * 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().
 */
#define MAX(a, b) ((a > b ? (a) : (b)))
#define MAXSIZE 10003

void dfs(int *res, int cur, int *pos, struct TreeNode* root) {
    if(*pos == cur) {
        res[(*pos)++] = root->val;
    } else {
        res[cur] = MAX(res[cur], root->val);
    }
    if(root->left) {
        dfs(res, cur + 1, pos, root->left);
    }
    if(root->right) {
        dfs(res, cur + 1, pos, root->right);
    }
}

int* largestValues(struct TreeNode* root, int* returnSize) {
    *returnSize = 0;
    if(root == NULL) {
        return NULL;
    }
    int *res = (int *)malloc(sizeof(int) * MAXSIZE);
    dfs(res, 0, returnSize, root);
    return res;
}

运行结果

在这里插入图片描述

BFS实现代码

/**
 * 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().
 */
#define MAXSIZE 10003
#define MAX(a, b) ((a > b) ? (a) : (b))

int* largestValues(struct TreeNode* root, int* returnSize){
    struct TreeNode **queue = (struct TreeNode **)malloc(sizeof(struct TreeNode*)*MAXSIZE);
    *returnSize = 0;
    int *res = (int *)malloc(sizeof(int)*MAXSIZE);
    if(root == NULL) {
        return NULL;
    }
    int pos = 0;
    int front = 0, rear = 0;
    int len = 0;
    queue[rear++] = root;
    while(front != rear) {
        len = rear - front;
        int maxVal = INT_MIN;
        while(len > 0) {
            len--;
            struct TreeNode *tmp = queue[front++];
            maxVal = MAX(maxVal, tmp->val);
            if(tmp->left) {
                queue[rear++] = tmp->left;
            }
            if(tmp->right) {
                queue[rear++] = tmp->right;
            }
        }
        res[pos++] = maxVal;
    }
    *returnSize = pos;
    free(queue);
    return res; 
}

运行结果

在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

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

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

相关文章

单应用多语言切换(语言国际化)

目录 编写语言管理类 编写Activity 的父类 DEMO 实验界面--首页Activity DEMO 实验界面--设置语言Activity Demo 语言资源文件 参考连接 编写语言管理类 package com.example.languageapplicationimport android.content.Context import android.content.ContextWrapper i…

Oracle Primavera Unifier 23.10 新特征

根据官方的说法,Unifier 23.7 ~ 23.9 更多为对功能bug的修复,以下将对23.10进行重点介绍 Cost Sheets Cost Sheets Support Conditional Formatting Conditional formatting of table data is now supported in cost sheets with features such as ce…

Excel下拉填充时,如何使得数字不递增?

问题描述:Excel下拉填充时,如何使得数字不递增? 解决办法:先下拉填充数据之后,看到最后一个单元格的右下角有个填充设置的符号,右键选择复制单元格即可。其中这里的填充序列就是递增数字的操作。

高性能网络编程 - 关于单台服务器并发TCP连接数理论值的讨论

文章目录 概述操作系统的限制因素文件句柄限制1. 进程限制2. 全局限制 端口号范围限制 概述 单台服务器可以支持的并发TCP连接数取决于多个因素,包括硬件性能、操作系统限制、网络带宽和应用程序设计。以下是一些影响并发TCP连接数的因素: 服务器硬件性…

split() 函数实现多条件转为数据为数组类型

使用 split() 函数并传递正则表达式 /[,;.-]/ 作为分隔符来将字符串按照逗号、分号和破折号进行拆分,并将结果赋值给 splitArray 数组。下面是一个示例代码: 在上面的示例中,我们使用 split() 函数将 inputString 字符串按照逗号、分号和破折…

低代码平台,业务开发的“银弹”

目录 一、为什么需要低代码平台 二、低代码平台的搭建能力 三、低代码其他能力 四、写在最后 随着互联网和信息技术的快速发展,各行各业都在积极拥抱数字化转型。在这个过程中,软件开发成为企业实现数字化转型的关键环节。然而,传统的软件开发…

IP协议,

文章目录 IP协议IP相当于OSI参考模型的第3层网络层与数据链路层的关系IP基础知识IP地址属于网络层地址路由控制数据链路的抽象化IP属于面向无连接型IP地址的基础知识IP地址的定义路由控制IPv6 IP协议 IP相当于OSI参考模型的第3层 IP(IPv4、IPv6)相当于…

70 内网安全-域横向内网漫游Socks代理隧道技术

目录 必要基础知识点:1.内外网简单知识2.内网1和内网2通信问题3.正向反向协议通信连接问题4.内网穿透代理隧道技术说明 演示案例:内网穿透Ngrok测试演示-两个内网通讯上线内网穿透Frp自建跳板测试-两个内网通讯上线CFS三层内网漫游安全测试演练-某CTF线下2019 涉及资源: 主要说…

el-table实现单选框+隐藏多选框+回显

0 效果 1 单选框 2 隐藏多选框 3 回显 回显数据要在el-table中添加两个属性

快速排序【2023年最新】

快速排序思想总结: 内附快排模版,可开袋即食。 学了一套快速排序的模版,接下来我说一下我的理解。 这套模板的思路是这样的,随机找到一个点,可以是数组中的左边界也可以是右边界,或者是数组中任何一个元…

Power Apps-“编辑“窗体组件

插入一个“编辑”窗体 连接数据源 在该组件的Item函数中编辑筛选符合条件的唯一记录 LookUp(表名,列名值) LookUp参考文档:Filter、Search 和 LookUp 函数(包含视频) - Power Platform | Microsoft Learn 数据表里的数据就一一对应出现在了组…

HarmonyOS开发:回调实现网络的拦截

前言 上一篇文章,分享了一个基于http封装的一个网络库,里面有一个知识点,在初始化的时候,可以设置请求头拦截和请求错误后的信息的拦截,具体案例如下: Net.getInstance().init({netErrorInterceptor: new M…

中国第二批,11个大模型备案获批

加上首批的 10 余个大模型,目前已有超过 20 个大模型获得审批。 据钛媒体独家报道,国内第二批通过备案的AI大模型包括11家公司,部分已面向全社会开放服务。加上首批的10余个大模型,目前已有超过20个大模型获得备案。 新一批备案…

【数据结构】手撕单链表

目录 前言 1 链表 1.1 链表的概念及结构 1.2 链表的分类 1.2.1 单向或者双向 1.2.2 带头或者不带头 1.2.3 循环或者非循环 1.2.4 无头单向非循环链表 1.2.5 带头双向循环链表 2 链表的实现 2.1 结构 2.2 结点的创建 2.3 尾插 2.4 头插 2.5 尾删 2.6 头删 2.7 …

竞赛 身份证识别系统 - 图像识别 深度学习

文章目录 0 前言1 实现方法1.1 原理1.1.1 字符定位1.1.2 字符识别1.1.3 深度学习算法介绍1.1.4 模型选择 2 算法流程3 部分关键代码 4 效果展示5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 图像识别 深度学习 身份证识别…

Linux 进程终止和等待

目录 一&#xff1a;进程常见的退出方法 1. main 函数返回值 2.调用 exit 3.调用 _exit 二&#xff1a;异常问题 三&#xff1a;进程等待 1.概念 2.进程等待的必要性 3.进程等待的方法 <1>&#xff1a;wait --- 系统调用 <2>&#xff1a;waitpid 进程…

如何利用SD-WAN优化跨国企业访问SAP的性能

随着企业数字化的创新发展和应用系统部署规模的增长&#xff0c;企业传统网络已经无法满足应用系统对大上行带宽、确定性时延、高可靠和精准优化等能力的要求&#xff0c;因此在现有传统网络基础上&#xff0c;企业也需要不断变革WAN技术&#xff0c;以更稳定、更高效、更安全的…

【PHP网页应用】MySQL数据库增删改查 基础版

使用PHP编写一个简单的网页&#xff0c;实现对MySQL数据库的增删改和展示操作 页面实现在index.php&#xff0c;其中basic.php为没有css美化的原始人版本 函数实现在database.php 目录 功能基本实现版 CSS美化版 basicindex.php index.php database.php 代码讲解 功能基…

Flink SQL Window TopN 详解

Window TopN 定义&#xff08;⽀持 Streaming&#xff09;&#xff1a; Window TopN 是特殊的 TopN&#xff0c;返回结果是每⼀个窗⼝内的 N 个最⼩值或者最⼤值。 应⽤场景&#xff1a; TopN 会出现中间结果&#xff0c;出现回撤数据&#xff0c;Window TopN 不会出现回撤数据…