LeetCode-637. Average of Levels in Binary TreeLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
https://leetcode.com/problems/average-of-levels-in-binary-tree/Given the root of a binary tree, return the average value of the nodes on each level in the form of an array. Answers within 10-5 of the actual answer will be accepted.
Example 1:

Input: root = [3,9,20,null,null,15,7] Output: [3.00000,14.50000,11.00000] 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].
Example 2:

Input: root = [3,9,20,15,7] Output: [3.00000,14.50000,11.00000]
Constraints:
[1, 10^4].-2^31 <= Node.val <= 2^31 - 1
- /**
- * Definition for a binary tree node.
- * struct TreeNode {
- * int val;
- * TreeNode *left;
- * TreeNode *right;
- * TreeNode() : val(0), left(nullptr), right(nullptr) {}
- * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
- * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
- * };
- */
- class Solution {
- public:
- vector<double> averageOfLevels(TreeNode* root) {
- vector<double> res;
- if (root == nullptr) {return res;}
- queue
q; - q.push(root);
- while (!q.empty()) {
- int size = q.size(), count = size;
- double sum = 0;
- while (size-- > 0) {
- TreeNode* node = q.front();
- q.pop();
- sum += node->val;
- if (node->left) {q.push(node->left);}
- if (node->right) {q.push(node->right);}
- }
- res.push_back(sum / count);
- }
- return res;
- }
- };
- /**
- * Definition for a binary tree node.
- * public class TreeNode {
- * int val;
- * TreeNode left;
- * TreeNode right;
- * TreeNode() {}
- * TreeNode(int val) { this.val = val; }
- * TreeNode(int val, TreeNode left, TreeNode right) {
- * this.val = val;
- * this.left = left;
- * this.right = right;
- * }
- * }
- */
- class Solution {
- public List
averageOfLevels(TreeNode root) { - List
res = new ArrayList<>(); - if (root == null) {return res;}
- Queue
q = new LinkedList<>(); - q.offer(root);
- while (!q.isEmpty()) {
- int size = q.size(), count = size;
- double sum = 0;
- while (size-- > 0) {
- TreeNode node = q.poll();
- sum += node.val;
- if (node.left != null) {q.offer(node.left);}
- if (node.right != null) {q.offer(node.right);}
- }
- res.add(sum / count);
- }
- return res;
- }
- }