The lowest common ancestor (LCA) of two nodes x and y in a tree is the lowest (i.e. deepest) node that has both x and y as descendants, where we define each node to be a descendant of itself.
For instance, in the following tree, 5 is the LCA of 1 and 9, and 6 is the LCA of 1 and 0:
Write a function Tree lowest_common_ancestor (Tree t, int x, int y); that returns the node that corresponds to the LCA of x and y in a binary tree of integers. You can assume that t contains both x and y and that t does not contain repeated elements.
Most of the program is already writen for you. Download it! It reads several trees in preorder with leaves marked with −1 and, for each of these, reads severals pairs of values and prints their LCA. You just have to specify and implement the lowest_common_ancestor() function (and other helper functions, should you need them). Also, write a comment with the time efficiency of your algorithm.
Input
2 5 6 1 -1 -1 7 2 -1 -1 0 -1 -1 3 9 -1 -1 4 -1 -1 1 9 1 0 6 3 3 6 5 5 3 3 5 0 -1 -1 5 2 3 -1 -1 8 -1 -1 -1 3 8 3 2 3 5 2 5 8 5 -1 -1
Output
5 6 5 5 5 3 5 2 2 5 5 5