Level Average

Easy
0/40
Average time to solve is 25m
profile
Contributed by
2 upvotes
Asked in companies
AmazonFacebookJosh Technology Group

Problem statement

You are given a binary tree. For each level of the binary tree, find the floor value of the average of every node in the tree.

Example:-
For the given binary tree: [1, 2, 3, -1, -1, 4, 5, -1, -1, -1, -1]
Start Node: 3

    1
   / \
 2   3
      / \
     4  5

The answer should be [1,2,4] because level 1 has an average of 1(AVERAGE of 1), level 2 has an average of 2 (floor value) (AVERAGE of 2 and 3) and level 2 has an average of 4 (floor value) (AVERAGE of 4 and 5). 
Detailed explanation ( Input/output format, Notes, Images )
Input Format :
The first line contains a single integer ‘T’ representing the number of test cases. Then each test case follows.

The first line of each test case contains elements of the tree in the level order form. The line consists of values of nodes separated by a single space. In case a node is null, we take -1 in its place.

For example, the input for the tree depicted in the above image would be :

1
2 3
4 -1 5 6
-1 7 -1 -1 -1 -1
-1 -1
Explanation :
Level 1 :
The root node of the tree is 1

Level 2 :
Left child of 1 = 2
Right child of 1 = 3

Level 3 :
Left child of 2 = 4
Right child of 2 = null (-1)
Left child of 3 = 5
Right child of 3 = 6

Level 4 :
Left child of 4 = null (-1)
Right child of 4 = 7
Left child of 5 = null (-1)
Right child of 5 = null (-1)
Left child of 6 = null (-1)
Right child of 6 = null (-1)

Level 5 :
Left child of 7 = null (-1)
Right child of 7 = null (-1)
Note:
The above format was just to provide clarity on how the input is formed for a given tree. 
The sequence will be put together in a single line separated by a single space. 
Hence, for the above-depicted tree, the input will be given as:
1 2 3 4 -1 5 6 -1 7 -1 -1 -1 -1 -1 -1
Output Format :
For each test case, print ‘H’ integers denoting the average value of all the nodes for a particular level where 'H' is the height of the tree given.

The output of each test case should be printed in a separate line.
Note :
You are not required to print anything, it has already been taken care of. Just implement the function.    
Constraints :
1 <= T <= 5
1 <= N (Number of Nodes) <= 10^5
1 <= VALUE of the nodes <= 10^9

Time Limit = 1 sec
Sample Input 1 :
2
1 2 3 4 -1 -1 5 -1 -1 -1 -1
1 1 1 -1 -1 -1 -1
Sample Output 1 :
1 2 4
1 1
Explanation for Sample Output 1 :
In the first test case, the tree looks like this:- 

So, the levels have an average value of 1, 2, and 4.

In the second test case, the tree looks like this:- 

 So, the levels have an average value of 1 and 1.
Sample Input 2 :
1
3 1 2 -1 -1 -1 -1
Sample Output 2 :
3 1
Hint

Iterate through the nodes level-wise.

Approaches (2)
Breadth-first Search

Run a breadth-first search and iterate through the levels order-wise and store the sum and number of nodes for every level. In the end, divide the sum of nodes of all the levels by the number of nodes for each level and print the answer.

 

Algorithm:-

 

  • Initialize an empty array named ANS to store the average for every level of the binary tree.
  • Initialize a map named SUM and NUMBER to store the sum of nodes and number of nodes for each level of the binary tree.
  • Initialize an empty QUEUE and add (ROOT,0) to the queue.
  • While QUEUE is not empty.
    • Pop-out the first element (Let the current node be NODE and its level be LEVEL). Add NODE.VAL to SUM[LEVEL] and increment NUMBER[LEVEL] by 1.
    • Add its children to the end of the queue if they are not NULL and increment the level of its children by 1.
  • Iterate through the map SUM in sorted order. (let’s say the iterator be LEVEL).
    • Add to ANS SUM[LEVEL] divided by NUMBER[LEVEL].
  • Return ANS.
Time Complexity

O(N), where N is the number of nodes.

We are iterating through ‘N’ nodes once, so the time complexity is O(N).

Space Complexity

O(N),

We are using an auxiliary array to store the sum and number of nodes for each level and the number of levels can grow up to ‘N’, so the space complexity is O(N).

Code Solution
(100% EXP penalty)
Level Average
Full screen
Console