- 题目:
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.
示例 1:
输入:
3
/
9 20
/
15 7
输出: [3, 14.5, 11]
解释:
第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].
注意:
节点值的范围在32位有符号整数范围内。
- 解题思路
利用辅助栈,按照层次遍历的顺序将节点依次压入栈中。并且每次出栈一层的元素,计算累加和。并将每层均值压入结果向量中
代码实现(C++)
vector<double> averageOfLevels(TreeNode* root) {
vector<double> res;
if(!root)
return res;
queue<TreeNode*> qu;
qu.push(root); //根节点入队
while(!qu.empty()) //队列不为空时
{
int size = qu.size();
double sum = 0;
for(int i = 0; i < size; i++) //每次出队一层的元素
{
TreeNode* temp_Node = qu.front();
qu.pop();
sum += temp_Node->val;