Ctrl K

Прямой обход дерева поиска

Средняя
Дан массив различных целых чисел order. Проверьте, может ли он быть результатом прямого обхода (сначала узел, потом левое поддерево, потом правое) какого-нибудь двоичного дерева поиска. В двоичном дереве поиска все значения в левом поддереве узла меньше значения узла, а все значения в правом поддереве — больше. Верните True или False. Попробуйте обойтись O(1) дополнительной памяти.
Пример 1
order=[10, 4, 2, 7, 15, 12] → True

Корень 10; слева поддерево 4 → 2, 7; справа 15 с левым ребёнком 12. Обход в прямом порядке даёт ровно эту последовательность.

Пример 2
order=[10, 4, 15, 7] → False

После 15 мы уже в правом поддереве 10, где все значения больше 10, поэтому 7 появиться не может.

Пример 3
order=[3, 2, 1] → True
Ограничения
  • 1 ≤ len(order) ≤ 10⁵
  • 1 ≤ order[i] ≤ 10⁵
  • Все числа в order различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево поиска по журналу обхода СредняяДерево из вершин-максимумов СредняяПара из двух деревьев поиска СредняяВысота дерева по порядку вставки СредняяСоседи снизу и сверху в дереве поиска Средняя
загружаем Python…
Вход
order=[10, 4, 2, 7, 15, 12]
Ожидается
True

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