Ctrl K

Второе место в дереве

Лёгкая
Дан корень root двоичного дерева. Известно, что в корне записано наименьшее значение всего дерева: ни одна вершина не хранит число меньше root.val. Так бывает, например, в турнирной сетке на выбывание, где в каждом «матче» побеждает меньшее число и поднимается наверх. Соберите все значения вершин в одно множество (повторы не считаются) и верните второе по величине снизу значение, то есть наименьшее из тех, что строго больше минимума. Если в дереве всего одно различное значение, верните -1.
Пример 1
root=tree_node([4, 4, 9, None, None, 9, 12]) → 9

Самое маленькое значение в дереве — 4 (оно в корне), следующее по величине — 9.

Пример 2
root=tree_node([7, 7, 7, 7, 7]) → -1

Все вершины хранят 7, второго различного значения нет, поэтому ответ -1.

Пример 3
root=tree_node([3, 3, 3, 3, 8, 3, 5]) → 5

Различные значения — 3, 5 и 8; второе по возрастанию — 5, хотя 8 встречается выше в дереве.

Ограничения
  • 1 ≤ число вершин ≤ 100
  • 1 ≤ Node.val ≤ 2³¹ − 1
  • root.val ≤ Node.val для каждой вершины
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлева, вершина, справа ЛёгкаяДеревья-близнецы ЛёгкаяДерево-зеркало ЛёгкаяВысота дерева ЛёгкаяРовно растущее дерево Лёгкая
загружаем Python…
Вход
root=tree_node([4, 4, 9, None, None, 9, 12])
Ожидается
9

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