Ctrl K

Это дерево поиска?

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

Слева от каждой вершины только меньшие значения, справа — только большие. Это дерево поиска.

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

11 правее вершины 4 — это допустимо, но она лежит в левом поддереве корня 10, а 11 > 10. Условие нарушено.

Пример 3
root=tree_node([6, 6]) → False

Значения должны быть строго меньше, а здесь левый ребёнок равен корню.

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

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