Ctrl K

Дерево поиска по журналу обхода

Средняя
Обход дерева поиска записал в журнал visits значения вершин в таком порядке: сначала текущая вершина, затем целиком её левое поддерево, затем целиком правое (прямой обход). В дереве поиска для каждой вершины все значения в левом поддереве строго меньше её значения, а все значения в правом — строго больше. Все значения различны. Восстановите дерево по журналу и верните его корень. Гарантируется, что журнал действительно получен из какого-то дерева поиска.
Пример 1
visits=[20, 11, 4, 15, 30, 25] → [20, 11, 30, 4, 15, 25]

Корень 20. Меньшие значения 11, 4, 15 уходят влево: 11 с детьми 4 и 15. Большие 30, 25 — вправо: 30 и его левый ребёнок 25.

Пример 2
visits=[9, 6, 3] → [9, 6, None, 3]

Каждое следующее значение меньше — дерево вытягивается влево.

Пример 3
visits=[500] → [500]
Ограничения
  • 1 ≤ len(visits) ≤ 100
  • 1 ≤ visits[i] ≤ 1000
  • Все значения различны
  • visits — прямой обход некоторого дерева поиска
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПрямой обход дерева поиска СредняяДерево из вершин-максимумов СредняяПара из двух деревьев поиска СредняяВысота дерева по порядку вставки СредняяСоседи снизу и сверху в дереве поиска Средняя
загружаем Python…
Вход
visits=[20, 11, 4, 15, 30, 25]
Ожидается
[20, 11, 30, 4, 15, 25]

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