二叉树的层平均值-力扣

这道题目也是二叉树的层序遍历的扩展,刚开始想到的方法是在层序遍历时,统计好每层的元素,让后将其平均后添加到返回数组,但是一开始将sum定义为了Int类型,即使avg是double类型,但是得到的结果仍然只有整数部分有效,原因是sum/vec.size() 在运算完后,才将值赋给avg,而运算的结果是int类型。代码如下:

class Solution {
public:
    vector<double> averageOfLevels(TreeNode* root) {
        vector<double> result;
        queue<TreeNode*> que;
        if(root != nullptr){
            que.push(root);
        }
        while(!que.empty()){
            int size = que.size();
            vector<int> vec;
            for(int i = 0; i < size; i++){
                TreeNode * cur = que.front();
                que.pop();
                vec.push_back(cur->val);
                if(cur->left != nullptr){
                    que.push(cur->left);
                }
                if(cur->right != nullptr){
                    que.push(cur->right);
                }
            }
            double sum = 0;
            for(int i = 0; i < vec.size(); i++){
                sum += vec[i];
            }
            double avg = sum / vec.size();
            result.push_back(avg);
        }
        return result;
    }
};

同样,这个保存每层元素的数组也没必要存在,只需在遍历时,将sum进行累加就可以,插入元素的数目与队列的大小也是一致的。代码如下:

class Solution {
public:
    vector<double> averageOfLevels(TreeNode* root) {
        vector<double> result;
        queue<TreeNode*> que;
        if(root != nullptr){
            que.push(root);
        }
        while(!que.empty()){
            int size = que.size();
            double sum = 0;
            for(int i = 0; i < size; i++){
                TreeNode * cur = que.front();
                que.pop();
                sum += cur->val;
                if(cur->left != nullptr){
                    que.push(cur->left);
                }
                if(cur->right != nullptr){
                    que.push(cur->right);
                }
            }
            double avg = sum / size;
            result.push_back(avg);
        }
        return result;
    }
};

相关推荐

  1. 637. 平均值

    2024-06-06 11:58:07       58 阅读
  2. 平均值-

    2024-06-06 11:58:07       32 阅读
  3. 【刷爆之637. 平均值

    2024-06-06 11:58:07       30 阅读
  4. 序遍历-

    2024-06-06 11:58:07       30 阅读
  5. Leetcode 637:平均值

    2024-06-06 11:58:07       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 11:58:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 11:58:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 11:58:07       87 阅读
  4. Python语言-面向对象

    2024-06-06 11:58:07       96 阅读

热门阅读

  1. 功能强大的开源数据中台系统 DataCap 2024.03.5 发布

    2024-06-06 11:58:07       22 阅读
  2. SQL小白10分钟快速入门

    2024-06-06 11:58:07       33 阅读
  3. 通过电脑查看Wi-Fi密码的方法,提供三种方式

    2024-06-06 11:58:07       29 阅读
  4. 固定数量点云采样算法

    2024-06-06 11:58:07       28 阅读
  5. 自然语言处理(NLP)中的迁移学习

    2024-06-06 11:58:07       26 阅读