【二叉树】Leetcode 637. 二叉树的层平均值【简单】

二叉树的层平均值

  • 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

示例 1:

在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:[3.00000,14.50000,11.00000]
解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。
因此返回 [3, 14.5, 11] 。

解题思路

广度优先搜索 (BFS)

  • 使用队列来实现BFS,从根节点开始,逐层遍历二叉树。

逐层处理

  • 在遍历每一层时,记录当前层的节点数量,计算当前层节点值的总和,然后计算平均值。

存储结果

  • 将每层的平均值存储在一个列表中,最终返回这个列表。

Java实现

public class AverageOfLevels {
    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }

    public List<Double> averageOfLevels(TreeNode root) {
        List<Double> result = new ArrayList<>();
        if (root == null) {
            return result;
        }

        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);

        while (!queue.isEmpty()) {
            int levelSize = queue.size();
            double sum = 0;
            for (int i = 0; i < levelSize; i++) {
                TreeNode node = queue.poll();
                sum += node.val;
                if (node.left != null) {
                    queue.add(node.left);
                }
                if (node.right != null) {
                    queue.add(node.right);
                }
            }
            result.add(sum / levelSize);
        }

        return result;
    }

    public static void main(String[] args) {
        AverageOfLevels averageOfLevels = new AverageOfLevels();

        // 构建示例二叉树
        TreeNode root = new TreeNode(3);
        root.left = new TreeNode(9);
        root.right = new TreeNode(20);
        root.right.left = new TreeNode(15);
        root.right.right = new TreeNode(7);

        // 计算每层的平均值
        List<Double> result = averageOfLevels.averageOfLevels(root);
        System.out.println("Average of levels: " + result);  // 输出: [3.0, 14.5, 11.0]
    }
}

时间空间复杂度

  • 时间复杂度:O(n),其中 n 是二叉树中的节点数。每个节点仅被访问一次。
  • 空间复杂度:O(m),其中 m 是二叉树中最宽的一层的节点数。在最坏情况下,队列中会存储最多一层的所有节点。

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

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

相关文章

【qt15】windeployqt 安装依赖

debug模式vs可以使用qt插件新建qt文件 D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe .\filecopier.exeWindows PowerShell Copyright (C) …

推荐一个简单可靠的驰骋低代码组织结构设计,设计开发使用20年了

题目&#xff1a;推荐一个简单可靠的组织结构设计。 以下观点是驰骋低代码设计者的观念与主张&#xff0c;根据如下内容生成。 组织结构分为&#xff1a;单组织模式、集团组织模式、SAAS组织模式。组织结构包含&#xff0c;人员、部门、角色、人员部门的关系、人员部门角色的关…

什么是泛洪攻击?DDos攻击也是泛洪攻击的一种?

在数字化时代的浪潮中&#xff0c;网络安全已成为一场没有硝烟的战争。其中&#xff0c;泛洪攻击作为一种常见的网络攻击手段&#xff0c;对个人用户、企业乃至国家网络安全构成了严重威胁。本文将对泛洪攻击进行深入剖析&#xff0c;包括其定义、原理、类型、影响以及应对策略…

【Redis数据库】命令操作

文章目录 一、连接命令二、键命令 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01; &#x1f495;希望您在这里可以感受到一份轻松愉快的氛围&#xff01; &#x1f495;这里不仅可以获得有…

ai聊天机器人app的分享!有4个热门的软件!

在科技日新月异的今天&#xff0c;AI聊天机器人已经不再是遥不可及的科幻概念&#xff0c;而是实实在在走进了我们的日常生活。无论是工作中的信息查询&#xff0c;还是生活中的闲聊解闷&#xff0c;这些智能助手都能为我们提供便捷、高效的服务。那么&#xff0c;市面上都有哪…

python系列29:压测工具locust

1. 介绍 使用pip进行安装&#xff0c;下面是个简单例子&#xff1a; from locust import HttpUser, taskclass HelloWorldUser(HttpUser):taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")然后打开web页面&#xff1a; 点…

深度剖析可视化大屏的技术架构

在当今信息化时代&#xff0c;可视化大屏作为一种重要的信息展示方式&#xff0c;广泛应用于监控指挥中心、数据分析展示等领域。其技术架构对于保障大屏系统的稳定性和性能至关重要。本文将深入探讨可视化大屏的技术架构&#xff0c;包括硬件架构、软件架构和数据架构等方面&a…

电位器、金属触摸传感器、红外避障传感器、烟雾传感器、倾斜开关传感器 | 配合Arduino使用案例

电位器 电位器就是一个旋转按钮&#xff0c;可以读取到开关旋转的数值&#xff08;范围&#xff1a;0-1023&#xff09; /****** Arduino 接线 ***** VCC - 5v* GND - GND* OUT - A0***********************/int mainPin A0; // 接继电器的 IN 端口void setup() { Serial.be…

提示词工程基础:定义与重要性

目录 一、引言二、提示词工程的定义1. 概念明晰2. 技术框架3. 功能作用 三、提示词工程的重要性1. 核心作用强调2. 提升效率与降低成本3. 推动技术发展与创新 四、提示词工程的组成部分1. 提示词设计2. 模型训练与调整3. 效果评估与优化 五、实际应用示例1. 虚拟助手2. 自动新闻…

【Python数据分析--Numpy库】Python数据分析Numpy库学习笔记,Python数据分析教程,Python数据分析学习笔记(小白入门)

一&#xff0c;Numpy教程 给大家推荐一个很不错的笔记&#xff0c;个人长期学习过程中整理的 Python超详细的学习笔记共21W字点我获取 1-1 安装 1-1-1 使用已有的发行版本 对于许多用户&#xff0c;尤其是在 Windows 上&#xff0c;最简单的方法是下载以下的 Python 发行版…

了解一下Ubuntu Linux

1.3.1 什么是Ubuntu Ubuntu这个名字非常神奇&#xff0c;它取自非洲南部祖鲁语的ubuntu&#xff0c;是一个哲学名称&#xff0c;其意思为“人性”或者“我的存在是因为大家的存在”。对于中国人来说&#xff0c;一般称呼它为乌班图。 Ubuntu是在Debian的基础上开发出来的&am…

qt dragEnterEvent dragLeaveEvent dragMoveEvent dropEvent都不响应的问题解决方案。

环境&#xff1a;vs2019qt5.14.2 坑哦。让我搞了好久。各种不执行&#xff0c;最后发现,不用vs调制&#xff0c;直接运行exe就能接收拖拽了。 记录一下,感觉是qt的bug。上代码。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QText…

算法金 | 再见,PCA 主成分分析!

​大侠幸会&#xff0c;在下全网同名[算法金] 0 基础转 AI 上岸&#xff0c;多个算法赛 Top [日更万日&#xff0c;让更多人享受智能乐趣] 1. 概念&#xff1a;数据降维的数学方法 定义 主成分分析&#xff08;PCA&#xff09;是一种统计方法&#xff0c;通过正交变换将一组可…

大模型卷出新高度|暴雨AI服务器M8878助解算力之困

当今世界&#xff0c;作为新一轮科技革命和产业革命的重要驱动力&#xff0c;AI已经成为“兵家必争之地”。我国也在政府报告中首次将“人工智能”行动纳入国家战略&#xff0c;开启了以人工智能为核心的数字经济高质量发展的新时代。 当今世界&#xff0c;作为新一轮科技革命…

超越传统AI 新型多智能体系统MESA,探索效率大幅提升

探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习&#xff08;MARL&#xff09;的征途中&#xff0c;如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中&#xff0c;这一问题变得更加棘手。《MESA: Cooperative Meta-…

计算机基础(5)——进制与进制转换

&#x1f497;计算机基础系列文章&#x1f497; &#x1f449;&#x1f340;计算机基础&#xff08;1&#xff09;——计算机的发展史&#x1f340;&#x1f449;&#x1f340;计算机基础&#xff08;2&#xff09;——冯诺依曼体系结构&#x1f340;&#x1f449;&#x1f34…

群体优化算法---灰狼优化算法学习介绍以及在卷积神经网络训练上的应用

**长文预警**介绍 在自然界中&#xff0c;狼群的社会结构和捕猎策略展现了高度的智能和协调性&#xff0c;灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#xff09;正是受此启发提出的一种群体智能优化算法。GWO主要模拟了灰狼的社会等级制度和捕猎行为&#xff0c;其核…

WLAN基础-WLAN安全

目录 一、引言二、WLAN安全威胁三、WLAN安全防御机制四、WLAN常用接入认证方式五、总结 一、引言 随着无线网络的广泛应用&#xff0c;WLAN&#xff08;无线局域网&#xff09;因其灵活性和便利性成为越来越多用户和企业首选的接入方式。然而&#xff0c;由于无线通信开放的传…

R语言探索与分析17-CPI的分析和研究

一、选题背景 CPI&#xff08;居民消费价格指数&#xff09;作为一个重要的宏观经济指标&#xff0c;扮演着评估通货膨胀和居民生活水平的关键角色。在湖北省这个经济活跃的地区&#xff0c;CPI的波动对于居民生活、企业经营以及政府宏观经济政策制定都具有重要的影响。因此&a…

ProtoSprite: Rapid 2D Art

✨ 概述 直接在场景视图中的场景上下文中快速创建、绘制和编辑精灵。以最小的摩擦和紧密的Unity集成快速制作2D艺术。 直接编辑PNG纹理文件,与其他软件广泛兼容。无需担心自定义文件格式或额外的组件。无缝集成到您的项目中,不会造成不必要的混乱。 增强您的二维艺术工作流程…