Ctrl K

Вставить уровень в дерево

Средняя
Дан корень root двоичного дерева и числа value и level. Уровни нумеруются с единицы: корень находится на уровне 1, его дети — на уровне 2 и так далее. Вставьте в дерево новый уровень из вершин со значением value так, чтобы он оказался ровно на уровне level: - каждой вершине уровня level - 1 добавьте двух новых детей со значением value; - её прежнее левое поддерево подвесьте левым ребёнком к новой левой вершине, а прежнее правое — правым ребёнком к новой правой; - если level = 1, создайте новый корень со значением value, а всё исходное дерево сделайте его левым поддеревом. Верните корень получившегося дерева.
Пример 1
root=tree_node([5, 3, 8, None, 4]), value=0, level=2 → [5, 0, 0, 3, None, None, 8, None, 4]

Под корнем 5 появляются две новые вершины 0. Старое левое поддерево (3 с ребёнком 4) уходит влево под левый 0, старое правое (8) — вправо под правый 0.

Пример 2
root=tree_node([2, 1]), value=7, level=1 → [7, 2, None, 1]

При level = 1 новая вершина 7 становится корнем, а всё старое дерево — её левым поддеревом.

Пример 3
root=tree_node([1, 2, 3]), value=9, level=3 → [1, 2, 3, 9, 9, 9, 9]

Уровень 3 на единицу глубже дерева: у каждого листа появляются два ребёнка со значением 9.

Ограничения
  • 1 ≤ число вершин ≤ 10⁴
  • -100 ≤ Node.val ≤ 100
  • -10⁵ ≤ value ≤ 10⁵
  • 1 ≤ level ≤ глубина дерева + 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево глазами наблюдателя справа СредняяДерево по столбцам СредняяПервый на нижнем этаже СредняяМаксимум на каждом уровне дерева СредняяДерево на клетчатой сетке Средняя
загружаем Python…
Вход
root=tree_node([5, 3, 8, None, 4]), value=0, level=2
Ожидается
[5, 0, 0, 3, None, None, 8, None, 4]

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