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; 
}

运行结果

在这里插入图片描述

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


http://www.niftyadmin.cn/n/5163087.html

相关文章

帷幄内容管理系统:从立人设、做内容到定向投流,品牌 KOS 体系打造「百万导购」

随着公域流量越来越贵,获客成本越来越高,品牌们已经越来越不满足于高曝光,而是更多地关注起销售转化率。继 KOL、KOC(关键意见消费者) 之后,KOS(关键意见销售)营销模式走入品牌的视野…

Redis-----SSM整合redis及redis的注解式开发以及redis的击穿,穿透,雪崩三种解决方案

目录 SSM项目整合Redis 导入pom依赖 配置文件spring-redis.xml redis.properties 配置redis的key生成策略 redis的注解式开发及应用场景 什么是redis的注解式 redis注解式的场景应用 Cacheable 自定义策略 Cacheable可以指定三个属性,value、key和condition…

计网----数据库(一)

计网----数据库(一) 一.什么是数据库 数据库是”按照数据结构来组织、存储和管理数据的仓库“。是一个长期储存在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 二.数据库的特点 1.规范化的本地存储 2.加密 3.共享 三.数据库的好处…

内网隧道搭建( 内网穿透)

一、使用代理工具 ew_for_win 1、环境准备: (1)一台双网卡虚拟机(作为跳板),能同时与攻击者主机和受害者主机通信: (2)一台攻击者主机: (3&…

《JavaScript设计模式》笔记

该篇文章用于记录阅读《JavaScript设计模式》后归纳的读书笔记,主要以代码形式进行展示,用于快速回顾对应设计模式的代码构造 1.面向对象编程 1.使用对象收编变量 // 优点:避免全局变量冲突与覆盖 // 缺点:不利于复用 var Chec…

软件测试/测试开发丨接口测试学习笔记,TcpDump与WireShark

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27859 协议分析工具 网络监听:TcpDump WireShark 代理 Proxy 推荐工具:手工测试charles [全平台]、安全测试burpsuite [全平台 j…

易货:一种古老而新颖的交易方式

在当今快速发展的经济环境中,易货模式正逐渐引起人们的关注。这种古老而新颖的交易方式,不仅为企业提供了新的商业机会,还为消费者带来了更多的选择。本文将详细介绍易货模式的概念、优势以及如何实现易货交易,并探讨这种模式未来…

阿里云 :推出通义大模型编码助手产品【通义灵码】

本心、输入输出、结果 文章目录 阿里云 :推出通义大模型编码助手产品【通义灵码】前言通义灵码简介主要功能主要功能点 支持的语言和 IDEjetbrains IDEA 安装计费相关弘扬爱国精神 阿里云 :推出通义大模型编码助手产品【通义灵码】 编辑:简简…