Ctrl K

Другие порядки для того же дерева поиска

Сложная
Различные целые числа по одному вставляют в изначально пустое двоичное дерево поиска в порядке, заданном массивом order. Первое число становится корнем, каждое следующее спускается от корня влево, если оно меньше текущей вершины, и вправо, если больше, пока не найдёт свободное место. Сколько существует **других** порядков вставки тех же чисел, после которых получится в точности такое же дерево? Сам исходный порядок order не считается. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
order=[2, 3, 1] → 1

Корень 2, у него дети 1 и 3. Тот же результат даёт только порядок [2, 1, 3].

Пример 2
order=[4, 2, 1, 3, 5] → 7

Первым всегда идёт 4, 2 должно опережать 1 и 3, а 5 можно поставить куда угодно после 4. Всего 8 порядков, без исходного — 7.

Пример 3
order=[3, 2, 1] → 0

Дерево — цепочка, каждое число обязано идти после предыдущего, других порядков нет.

Ограничения
  • 1 ≤ len(order) ≤ 1000
  • 1 ≤ order[i] ≤ 10⁵
  • Все числа в order различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько форм у дерева поиска СредняяСбалансированное дерево из отсортированного списка ЛёгкаяСамое тяжёлое поддерево поиска СложнаяЧестный раздел цветных бусин Сложнаяk-й маршрут по алфавиту Сложная
загружаем Python…
Вход
order=[2, 3, 1]
Ожидается
1

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