DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

ZeeshanAli-0704
ZeeshanAli-0704

Posted on

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].

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var averageOfLevels = function (root) {
  if (root === null) {
    return null;
  }
  let q = [root];
  let averageArray = [];

  while (q.length) {
    let level = [];
    let sum = 0;
    let count = 0;
    let loopTill = q.length;
    // looping only till the length of q;
    while (loopTill) {
      // removing first element from queue
      let node = q.shift();
      // adding up node val to get sum & also incrementing count tokeep track of nodes at each level
      sum = sum + node.val;
      count = count + 1;
      if (node.left !== null) {
        level.push(node.left);
      }
      if (node.right !== null) {
        level.push(node.right);
      }
      // reducing value as we have remove first element using shift() above
      loopTill--;
    }
    //get average of this level
    let averageOfLevel = sum / count;
    averageArray.push(averageOfLevel);

    q = level;
  }
  return averageArray;
};

Enter fullscreen mode Exit fullscreen mode

Top comments (0)

DEV

Thank you.

Β 
Thanks for visiting DEV, we’ve worked really hard to cultivate this great community and would love to have you join us. If you’d like to create an account, you can sign up here.