The node structure of a binary tree is modified such that each node has the reference to its parent node.
You are given two nodes: ‘N1’ and ‘N2’, of the above binary tree. Your task is to return the lowest common ancestor (LCA) of the given nodes.
Note:
Let ‘TREE’ be a binary tree. The lowest common ancestor of two nodes, ‘N1’ and ‘N2’, is defined as the lowest node in ‘TREE’ with ‘N1’ and ‘N2’ as descendants (where we allow a node to be a descendant of itself).
1 <= T <= 100
1 <= N <= 10 ^ 4
1 <= DATA <= 10 ^ 4
N1 != N2
N1 and N2 exist in the ‘TREE’.
The ‘TREE’ contains unique nodes.
Where ‘T’ is the number of test cases, ‘N’ is the number of nodes in the ‘TREE’, ‘DATA’ represents the value of the node, ‘N1’ and ‘N2’ represent the nodes of which LCA has to be found.
Time limit: 1 sec.
2
3 1
4 5 2 3 7 -1 -1 -1 -1 6 5 -1 1 -1 -1 -1 -1
2 10
3 7 4 -1 -1 8 9 2 6 -1 5 -1 -1 -1 10 -1 -1 -1 -1
5
8
Test Case 1 :
For nodes 3 and 1, common ancestors are 5 and 4. Out of which, 5 is the nearest ancestor to both nodes. So, LCA(3, 1) = 5.
Test Case 2 :
For nodes 2 and 10, common ancestors are 8, 4 and 3. Out of which, 8 is the nearest ancestor to both nodes. So, LCA(2, 10) = 8.
2
6 4
2 1 6 -1 -1 4 -1 -1 -1
3 5
3 -1 4 -1 5 -1 -1
6
3