Дано двоичное дерево поиска (BST - Binary Search Tree) и два узла в дереве. Необходимо найти наименьшего общего предка (LCA - Lowest Common Ancestor) этих двух узлов в дереве.
Согласно определению LCA на Википедии: "Наименьший общий предок (LCA) двух узлов p и q в дереве T - это узел с наименьшей глубиной, который имеет и p, и q в качестве потомков (где мы разрешаем узлу быть потомком самого себя)."
Для двоичного дерева поиска:
6
/ \\\\
2 8
/ \\\\ / \\\\
0 4 7 9
/ \\\\
3 5
Если мы ищем LCA для узлов 2 и 8, то ответом будет 6.
Если мы ищем LCA для узлов 2 и 4, то ответом будет 2.
Для того, чтобы решить эту задачу, мы можем использовать следующий алгоритм:
Для двоичного дерева поиска:
6
/ \\\\
2 8
/ \\\\ / \\\\
0 4 7 9
/ \\\\
3 5
Для узлов 2 и 8: