码迷,mamicode.com
首页 > 其他好文 > 详细

637.二叉树的平均值

时间:2019-02-21 00:22:30      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:ret   代码   queue   size   public   数组   笔记   front   题目   

题目

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.

示例 1:

输入:
    3
   /   9  20
    /     15   7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3,  第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].

代码

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

    
};

笔记:将queue的头元素取出,如果左右子树不为null,两数相加。然后头元素执行pop(),算出平均值。

637.二叉树的平均值

标签:ret   代码   queue   size   public   数组   笔记   front   题目   

原文地址:https://www.cnblogs.com/kloseer/p/10409762.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!