leetcode算法(637.二叉树的层平均值)

本题就是层序遍历的时候把一层求个总和再取一个均值。

cpp 复制代码
class Solution {
public:
    // 计算二叉树每一层节点值的平均值
    vector<double> averageOfLevels(TreeNode* root) {
        // 创建队列用于BFS层序遍历
        queue<TreeNode*> que;
        
        // 如果根节点不为空,将其加入队列
        if (root != NULL) que.push(root);
        
        // 存储结果的向量,将保存每一层的平均值
        vector<double> result;
        
        // 当队列不为空时,继续遍历
        while (!que.empty()) {
            // 获取当前层的节点数量
            int size = que.size();
            
            // 初始化当前层节点值的总和
            double sum = 0; // 使用double防止整数溢出和保留小数
            
            // 遍历当前层的所有节点
            for (int i = 0; i < size; i++) {
                // 取出队首节点
                TreeNode* node = que.front();
                que.pop();
                
                // 将当前节点的值累加到当前层的总和
                sum += node->val;
                
                // 将当前节点的左子节点加入队列(如果存在)
                if (node->left) que.push(node->left);
                
                // 将当前节点的右子节点加入队列(如果存在)
                if (node->right) que.push(node->right);
            }
            
            // 计算当前层的平均值并加入结果集
            result.push_back(sum / size); // sum为double,size为int,结果为double
        }
        
        // 返回所有层平均值的向量
        return result;
    }
};
相关推荐
智驱力人工智能8 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
孞㐑¥9 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风9 小时前
代码随想录第十五天
数据结构·算法·leetcode
XX風9 小时前
8.1 PFH&&FPFH
图像处理·算法
NEXT0610 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠10 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂10 小时前
代码随想录day37动态规划part05
算法
sali-tec10 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉
子春一10 小时前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
人道领域11 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法