Наименьший общий предок

Medium
TreeDFSRecursion

Дано бинарное дерево. Найдите наименьшего общего предка (LCA) двух узлов p и q.

LCA определяется как наиболее глубокий узел, который является предком и p, и q (узел может быть предком самого себя).

//       3
//      / \
//     5   1
//    / \ / \
//   6  2 0  8
//     / \
//    7   4

lowestCommonAncestor(root, 5, 1) // => 3
lowestCommonAncestor(root, 5, 4) // => 5

В коде уже определены TreeNode, buildTree(arr) и findNode(root, val).

Ограничения

  • Количество узлов: [2, 10^5]
  • Все значения узлов уникальны
  • p !== q, оба узла гарантированно существуют

Примеры

Пример 1
Вход:
tree = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
Выход:
3
Пример 2
Вход:
tree = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
Выход:
5
Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода