Given a Binary Search Tree and two node values x and y present in the BST. Your task is to find the pth (p >= 1) common ancestor of these two nodes x and y.
The 1st common ancestor is the lowest common ancestor. The lowest common ancestor between two nodes n1 and n2 is defined as the lowest node in T that has both n1 and n2 as descendants (where we allow a node to be a descendant of itself).
All the elements of BST are non-negative and there is no duplicate entry in BST. Also, x and y are unequal.
You are required to complete the function pthCommonAncestor().
Return -1 if the pth common ancestor doesn’t exist for a given BST.
Note: The Input/Ouput format and Example given are used for system's internal purpose, and should be used by a user for Expected Output only. As it is a function problem, hence a user should not read any input from stdin/console. The task is to complete the function specified, and not to write the full code.
The first line of input contains a single integer T denoting the number of test cases. Then T test cases follow. Each test case consists of three lines. The first line of each test case consists of two integers N and p, denoting the number of elements in the BST and the pth common ancestor to be found, respectively. The second line of each test case consists of N space-separated integers denoting the elements in the BST. The third line of each test case consists of two integers x and y as described in the problem statement.
You are required to complete the function pthCommonAncestor() which takes the root of the tree and two integers x and y(as described in the problem statement) as the arguments. The function returns the value of pth common ancestor to be found.
1 <= T <= 1000
2 <= N <= 1000
1 <= p <= 100
50 30 70 60 55 65
6 3 8 1 4
The BST for the sample test case 1 is-
50 // 50 is the 3rd common ancestor of 55 and 65
30 70 // 70 is the 2nd common ancestor of 55 and 65
60 // 60 is the 1st common ancestor of 55 and 65
Hence, the value of 2nd common ancestor of 55 and 65 is 70.
The BST for the sample test case 2 is-
6 // 6 is the 2nd common ancestor of 1 and 4
3 8 // 3 is the 1st common ancestor of 1 and 4
Hence, the value of 2nd common ancestor of 1 and 4 is 6.
We strongly recommend solving this problem on your own before viewing its editorial. Do you still want to view the editorial?Yes