Lowest common ancestor

The lowest common ancestor (LCA) of two nodes xx and yy in a tree is the lowest (i.e. deepest) node that has both xx and yy 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 xx and yy in a binary tree of integers. You can assume that tt contains both xx and yy and that tt 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-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