Bob's Task

Moderate
0/80
Average time to solve is 30m
profile
Contributed by
16 upvotes
Asked in companies
OYOSamsungJosh Technology Group

Problem statement

Bob has been given a binary tree having N nodes. He has been asked to check if all the leaf nodes are at the same level.

Your task is to help Bob in checking if all the leaf nodes are at the same level or not. Return true if all the leaf nodes are at the same level otherwise return false.

A binary tree is a hierarchical data structure in which each node has at most two children.

Any node whose left and right child are null is called a leaf node in a binary tree.

Example:
Consider the given binary tree:

For the given tree the leaf nodes are 5, 4, 7, 6. All these nodes are on the same level. So the output will be True. 
Detailed explanation ( Input/output format, Notes, Images )
Input format :
The first line contains a single integer T representing the number of test cases. 

The first line of each test case contains elements in the level order form(refer to the example below) (separated by space). If any node does not have a left or right child, take -1 in its place.
Example:
Elements are in the level order form. The input consists of values of nodes separated by a single space in a single line. In case a node is null, we take -1 in its place.

For example, the input for the tree depicted in the below 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)

The first not-null node (of the previous level) is treated as the parent of the first two nodes of the current level. The second not-null node (of the previous level) is treated as the parent node for the next two nodes of the current level and so on.

The input ends when all nodes at the last level are 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 "True" if all the leaf nodes are at the same level otherwise print "False” (without quotes).

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 <= 100
1 <= N <= 3000

Time Limit: 1 sec
Sample Input 1:
2
1 2 4 3 -1 5 6 -1 -1 -1 -1 -1 -1 
1 2 3 4 -1 -1 -1 -1 -1
Sample Output 1:
True
False
Explanation For Sample Output 1:
In the first test case, all the leaves of the binary tree (3,5, and 6) are at the same level (level 3). So True is returned.

Diagram of the Binary Tree given in the first test case of Sample Input 1.

In the second test case, all the leaves of the binary tree (3 and 4) are not at the same level (leaf 3 is at level 2 and leaf 4 is at level 3). So False is returned.

Diagram of the Binary Tree given in the second test case of Sample Input 1.

Sample Input 2:
2
1 2 3 -1 -1 4 -1 -1 -1
1 2 -1 3 -1 4 -1 -1 -1
Sample Output 2:
False
True
Hint

Check all levels of the leaves in the binary tree.

Approaches (1)
Breadth-First Search

We can run a breadth-first search (BFS) on the binary tree and find out the levels of all the leaves in the binary tree. If the levels of all the leaves in the binary tree are equal, we return True else we return False.

 

Algorithm:-

 

  1. Run a breadth-first search (BFS) from node 1.
  2. Make an empty queue and push node 1 into the queue and update its level as 0.
    1. Pop the first element in the queue. (Lets its level be ‘X’)
    2. Update the levels of its right child (if present) and left child (if present) as ‘X’+1.
    3. Push the right child (if present) and left child (if present) into the queue.
    4. If both right and left child is not present then the node is a leaf and hence store its level in a separate array.
    5. Repeat the algorithm till the length of the queue is greater than 0.
  3. Iterate through the array ‘ARR’ (from 1 to ‘N’ where ‘N’ is the length of the array) in which all the levels of the leaf nodes are stored (say the iterator be i).
  4. Check whether ‘ARR[i]’ is equal to ‘ARR[0]’. If no, return False.

      4. If the elements in the array ‘ARR’ are equal, return True.


 

Time Complexity

O(N), where ‘N’ is the number of nodes in the binary tree.


 

We are iterating through every node in the binary tree once, so the Time complexity is O(N) when n is the length of the array.

Space Complexity

O(K), where ‘K’ is the number of leaf nodes in the binary tree.


 

We are storing the level of every leaf node in the binary tree in an array, so the Space complexity is O(K), where ‘K’ is the number of leaf nodes in the binary tree.


 

Code Solution
(100% EXP penalty)
Bob's Task
Full screen
Console