Ctrl K

Дерево из упорядоченной цепочки

Средняя
Дан head — голова односвязного списка, значения в котором идут по неубыванию. Постройте из них сбалансированное дерево поиска по такому правилу: - корнем становится средний элемент списка; если элементов чётное число, берётся левый из двух средних; - элементы левее него по тому же правилу образуют левое поддерево, правее — правое; - пустой кусок даёт пустое поддерево. Верните корень построенного дерева (для пустого списка — None).
Пример 1
head=list_node([1, 3, 6, 8, 12, 15]) → [6, 1, 12, None, 3, 8, 15]

Из шести значений средним берём левое из двух центральных — 6. Слева остаются [1, 3] (корень 1, справа 3), справа [8, 12, 15] (корень 12).

Пример 2
head=list_node([-4, 0, 7]) → [0, -4, 7]

Корень — 0, по бокам -4 и 7.

Пример 3
head=list_node([]) → None
Ограничения
  • 0 ≤ число элементов ≤ 2 · 10⁴
  • -10⁵ ≤ Node.val ≤ 10⁵
  • Значения в списке идут по неубыванию
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПерестроить дерево поиска СредняяСбалансированное дерево из отсортированного списка ЛёгкаяДругие порядки для того же дерева поиска СложнаяСколько форм у дерева поиска СредняяЭто дерево поиска? Средняя
загружаем Python…
Вход
head=list_node([1, 3, 6, 8, 12, 15])
Ожидается
[6, 1, 12, None, 3, 8, 15]

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