给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。
输入:
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> temp;
vector<double> result;
if(!root) return result;
queue<TreeNode *> treeQueue;
treeQueue.push(root);
while (!treeQueue.empty()) {
int nSize = treeQueue.size();
double nowsum = 0;
for (int i = 0; i < nSize; i++) {
TreeNode * tempNode = treeQueue.front();
treeQueue.pop();
if (tempNode -> left) treeQueue.push(tempNode -> left);
if (tempNode -> right) treeQueue.push(tempNode -> right);
nowsum += tempNode -> val;
}
nowsum = nowsum / nSize;
result.push_back(nowsum);
//result.push_back(temp);
//temp.clear();
}
return result;
}
};