Ctrl K

Дерево из вершин-максимумов

Средняя
Дан массив values из различных целых чисел. По нему строится двоичное дерево по такому правилу: - корнем становится наибольшее число массива; - левое поддерево строится тем же правилом из части массива слева от этого числа; - правое поддерево — из части справа от него; - пустая часть даёт пустое поддерево. Постройте это дерево и верните его корень.
Пример 1
values=[4, 9, 1, 7, 3] → [9, 4, 7, None, None, 1, 3]

Наибольшее число 9 становится корнем. Слева от него только 4 — это левый ребёнок. Справа часть [1, 7, 3]: её максимум 7 — правый ребёнок корня, у которого слева 1, а справа 3.

Пример 2
values=[2, 5, 8] → [8, 5, None, 2]

Массив возрастает, поэтому каждый максимум стоит в конце своей части: дерево вытягивается в цепочку левых детей 8 → 5 → 2.

Пример 3
values=[10, 3, 6, 2, 0] → [10, None, 6, 3, 2, None, None, None, 0]

10 стоит первым, поэтому левого поддерева нет. Справа остаётся [3, 6, 2, 0]: корень поддерева 6, слева от него 3, справа часть [2, 0] с корнем 2 и правым ребёнком 0.

Ограничения
  • 1 ≤ values.length ≤ 1000
  • 0 ≤ values[i] ≤ 1000
  • все числа в values различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПрямой обход дерева поиска СредняяДерево поиска по журналу обхода СредняяДерево по прямому и симметричному обходам СредняяДерево по симметричному и обратному обходам СредняяДерево по прямому и обратному обходам Средняя
загружаем Python…
Вход
values=[4, 9, 1, 7, 3]
Ожидается
[9, 4, 7, None, None, 1, 3]

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