Leetcode 637.二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例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;
}
};