0

Largest common ancestor

Difficulty: MEDIUM
Avg. time to solve
35 min
Success Rate
55%

Problem Statement
Suggest Edit

Given a binary search tree and two nodes, find their largest common ancestor.

Largest Common Ancestor is the one having the highest node value among all the common ancestors of given nodes. Assume both nodes are present in the binary tree.

Input Format:
The first line of input contains an integer T, the number of test cases.

The first line of every next T lines contain elements 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 on its place.

The second line of every next T lines contains Node 1’s data. 

The third line of every next T lines contains Node 2’s data. 
Note
For example, the input for the tree depicted in the below image would be :

example

20
10 35 
5 15 30 42 
-1 13 -1 -1 -1 -1 -1 
-1 -1

Explanation:

Level 1 :
The root node of the tree is 20
Level 2 :
Left child of 20 = 10
Right child of 20 = 35
Level 3 :
Left child of 10 = 5
Right child of 10 = 15
Left child of 35 = 30
Right child of 35 = 42
Level 4 :
Left child of 5 = null (-1)
Right child of 5 = null (-1)
Left child of 15 = 13
Right child of 15 = null (-1)
Left child of 30 = null (-1)
Right child of 30 = null (-1)
Left child of 42 = null (-1)
Right child of 42 = null (-1)
Level 5 :
Left child of 13 = null (-1)
Right child of 13 = 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:
20 10 35 5 15 30 42 -1 13 -1 -1 -1 -1 -1 -1 -1
Output Format:
For every test case print single line containing an integer i.e the largest common ancestor.
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.    
Constraints:
1 <= T <= 5    
1 <= N <= 10^5 
0 <= data <= 10^9

where data denotes the value of each node in the given tree.

Time limit: 1 second
Sample Input 1:
1 
8 5 10 2 6 -1 -1 -1 -1 -1 7 -1 -1
2 10
Sample Output 1:
8
Sample Input 2:
1
8 5 10 2 6 -1 -1 -1 -1 -1 7 -1 -1
2 7
Sample Output 2:
8
Explanation to Sample Input 2:

BST Image

The Nodes marked with yellow colour are the possible ancestors for Node 1 and Node 2. 
Out of all the ancestors i.e. 5 and 8, 8 is the largest, thus, the answer is 8. 
Want to solve this problem? Login now to get access to solve the problems