Ctrl K

Пара в дереве поиска

Лёгкая
Дан корень root двоичного дерева поиска: для каждой вершины все значения в её левом поддереве меньше её значения, а в правом — больше. Все значения в дереве различны. Проверьте, есть ли в дереве две разные вершины, значения которых в сумме дают goal. Верните True, если такие найдутся, иначе False.
Пример 1
root=tree_node([10, 4, 15, 1, 7, None, 20]), goal=22 → True

7 + 15 = 22, оба числа есть в дереве.

Пример 2
root=tree_node([10, 4, 15, 1, 7, None, 20]), goal=20 → False

20 = 10 + 10, но вершина со значением 10 одна, а брать одну вершину дважды нельзя. Других подходящих пар нет.

Пример 3
root=tree_node([3]), goal=6 → False
Ограничения
  • 1 ≤ число вершин ≤ 10⁴
  • -10⁴ ≤ Node.val ≤ 10⁴
  • root — корректное двоичное дерево поиска
  • -10⁵ ≤ goal ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамая близкая пара в дереве поиска Лёгкаяk ключей рядом с целью СложнаяДерево по столбцам СредняяПоддерево над нижним рядом СредняяСтолбцы дерева с ничьими Сложная
загружаем Python…
Вход
root=tree_node([10, 4, 15, 1, 7, None, 20]), goal=22
Ожидается
True

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