Lowest common ancestor

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:

[image]

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.

Problem information

Author: Jordi Petit

Generation: 2026-01-25T11:30:14.492Z

© Jutge.org, 2006–2026.
https://jutge.org
