637. Average of Levels in Binary Tree

Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.

Example 1:

Input:
    3
   / \
  9  20
    /  \
   15   7
Output: [3, 14.5, 11]
Explanation:
The average value of nodes on level 0 is 3,  on level 1 is 14.5, and on level 2 is 11. Hence return [3, 14.5, 11].

Note:

  1. The range of node's value is in the range of 32-bit signed integer.

vector<double> averageOfLevels(TreeNode* root) { // time: O(n); space: O(h)
    vector<double> res;
    if (!root) return res;
    queue<TreeNode*> q({root});
    double sum = 0.f;
    while (!q.empty()) {
        int n = q.size();
        sum = 0.f;
        for (int i = 0; i < n; ++i) {
            TreeNode* t = q.front(); q.pop();
            sum += static_cast<double>(t->val);
            if (t->left) q.push(t->left);
            if (t->right) q.push(t->right);
        }
        res.push_back(sum / n);
    }
    return res;
}

Last updated

Was this helpful?