Ctrl K

Самый большой разрыв с предком

Средняя
Дан корень root двоичного дерева, в вершинах которого записаны неотрицательные числа. Вершина a считается предком вершины b, если b лежит в поддереве a и не совпадает с ней: это ребёнок a, ребёнок ребёнка и так далее вниз. Среди всех пар «предок — потомок» найдите ту, у которой значения различаются сильнее всего, и верните модуль этой разности.
Пример 1
root=tree_node([5, 9, 2, 12, None, None, 0]) → 7

Вершина 12 лежит под 9 и 5, вершина 0 — под 2 и 5. Лучшие пары «предок — потомок»: |12 − 5| = 7 и |0 − 5| = 5. Числа 12 и 0 стоят в разных ветках и в пару не годятся, поэтому ответ 7.

Пример 2
root=tree_node([4, None, 4, None, 4]) → 0

Все значения на цепочке одинаковые, любой разрыв равен 0.

Пример 3
root=tree_node([3, 1, 8, None, None, 6, 20]) → 17

Пара «корень 3 — потомок 20» даёт 17; это больше, чем |8 − 20| = 12 или |3 − 1| = 2.

Ограничения
  • 2 ≤ число вершин ≤ 10⁵
  • 0 ≤ Node.val ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
root=tree_node([5, 9, 2, 12, None, None, 0])
Ожидается
7

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 90 тестов на сервере, включая скрытые.