Leetcode 637.二叉树的层平均值

Leetcode 637.二叉树的层平均值

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例1:
这里写图片描述

题目解释

从题意来看,这个就是二叉树层次遍历的变种题,所以如果掌握了二叉树的层次遍历,这个问题就迎刃而解。

方法解答

  1. 教科书般的解答,层次遍历,最先想到的肯定是队列。忘记了的同学赶紧捡起书本好好的复习一下。

代码:

博主已将在自己目前在Leetcode所刷的题目的解答代码都上传了github,爱学习的同学可以自行上去查看,欢迎star/follow。

github地址:https://github.com/Gary-Deeplearning/Leetcode

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<double> averageOfLevels(TreeNode* root) {
        vector<double> res;
        if (!root)
            return res;
        queue<TreeNode*> queTree;
        queTree.push(root);

        while(!queTree.empty()){
            // 目前这一层的节点个数
            int currSize = queTree.size();
            auto sum = 0.0;
            vector<int> currLevel(currSize);

            for (size_t i = 0; i < currSize; ++i){
                // 出队
                TreeNode* node = queTree.front();
                queTree.pop();
                sum += node->val;

                // 下一层的元素入队
                if (node->left)
                    queTree.push(node->left);
                if (node->right)
                    queTree.push(node->right);
            }
            res.push_back(sum / currSize);
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/Gary___/article/details/81562147