当前位置: 首页 > news >正文

leetcode515 在每个树行中找最大值

步骤:

  1. 初始化一个队列用于BFS,如果根节点存在则加入队列。

  2. 当队列不为空时:

    • 获取当前层的节点数量。

    • 初始化一个变量来记录当前层的最大值。

    • 处理当前层的每个节点:

      • 如果当前节点的值大于当前最大值,则更新最大值。

      • 如果当前节点有左子节点或右子节点,将它们加入队列。

    • 处理完当前层所有节点后,将最大值加入结果列表。

  3. 返回结果列表。

class Solution {
public:
    vector<int> largestValues(TreeNode* root) {
        vector<int> res; 
        queue<TreeNode*> q;
        if(root == nullptr) return res;
        q.push(root);
        while(!q.empty()){
            int size = q.size();
            TreeNode* cur;
            int num = INT_MIN;
            for(int i = 0; i < size; i++){
                cur = q.front();
                q.pop();
                if(cur->val > num) num = cur->val;
                if(cur->left) q.push(cur->left);
                if(cur->right) q.push(cur->right);
            }
            res.push_back(num);
        }
        return res;
    }
};

递归:

class Solution {
private:
    void traverse(TreeNode* cur, int level, vector<int>& res){
        if(cur == nullptr) return;
        if(level >= res.size()){
            res.push_back(cur->val);
        }else{
            res[level] = max(res[level], cur->val);
        }
        if(cur->left) traverse(cur->left, level + 1, res);
        if(cur->right) traverse(cur->right, level + 1, res);
    }
public:
    vector<int> largestValues(TreeNode* root) {
        vector<int> res;
        traverse(root, 0, res);
        return res;
    }
};

http://www.dtcms.com/a/106953.html

相关文章:

  • mac air m系列arm架构芯片安装虚拟机 UTM+debian 浏览器firefox和chrome
  • Bugku-贝斯手
  • 【Linux篇】自主Shell命令行解释器
  • Spring 核心技术解析【纯干货版】- XVIII:Spring 网络模块 Spring-WebSocket 模块精讲
  • ray.rllib-入门实践-12-2:在自定义policy中注册使用自定义model(给自定义model新增参数)
  • js中判断对象是否包含某个属性(元素)
  • C++ 编程指南33 - 使用模板来表达适用于多种参数类型的算法
  • 【力扣hot100题】(041)将有序数组转换为二叉搜索树
  • Mysql连接池报错
  • 春晚魔术[蓝桥]
  • 查看 Linux 版本 Debian 飞牛os
  • Opencv计算机视觉编程攻略-第七节 提取直线、轮廓和区域
  • HCIA/HCIP基础知识笔记汇总
  • USC安防平台视频存储 RK3588
  • 问题大集10-git使用commit提交中文显示乱码
  • 深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本
  • 【数据结构】图论进阶:生成树、生成森林与权值网络的终极解析
  • PyTorch中如何向已有预训练模型新增层
  • Go 语言语法精讲:从 Java 开发者的视角全面掌握
  • 架构设计基础系列:CQRS架构模式
  • 中级:Git面试题全攻略
  • AI提示词:知识探索专家
  • PyQt学习记录
  • python 项目怎么通过docker打包
  • 前端面试题之CSS中的box属性
  • 【Python使用】嘿马云课堂web完整实战项目第1篇:项目概述,项目背景【附代码文档】
  • EasyExcel在Linux上运行正常,在Docker中导出FontConfiguration.getVersion错误(不额外安装fontconfig)
  • 教学管理系统的E-R图
  • go游戏后端开发23:赢三张游戏逻辑
  • C语言内存函数详解