Ctrl K

Дерево на клетчатой сетке

Средняя
Дан корень root двоичного дерева. Нарисуйте дерево в виде таблицы строк по таким правилам. Пусть в дереве L уровней (у дерева из одного корня L = 1). Таблица состоит из L строк и 2^L − 1 столбцов, все клетки изначально — пустые строки "". - Корень записывается в верхнюю строку, ровно в средний столбец. - Если узел стоит в строке r (нумерация с нуля) и столбце c, то его левый ребёнок ставится в строку r + 1 и столбец c − 2^(L − r − 2), а правый — в столбец c + 2^(L − r − 2). - В клетку записывается значение узла в виде строки, например "-3". Верните получившуюся таблицу как список строк таблицы.
Пример 1
root=tree_node([7, None, -3]) → [['', '7', ''], ['', '', '-3']]

Два уровня, значит ширина 2² − 1 = 3. Корень 7 — в среднем столбце, его правый ребёнок -3 — в столбце 2 следующей строки.

Пример 2
root=tree_node([5, 8, 1, 4]) → [['', '', '', '5', '', '', ''], ['', '8', '', '', '', '1', ''], ['4', '', '', '', '', '', '']]

Три уровня, ширина 7. Корень в столбце 3, дети на расстоянии 2 от него (столбцы 1 и 5), внук 4 — на расстоянии 1 от своего родителя 8, в столбце 0.

Ограничения
  • В дереве от 1 до 210 узлов
  • -99 ≤ значение узла ≤ 99
  • В дереве не больше 10 уровней
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево глазами наблюдателя справа СредняяДерево по столбцам СредняяПервый на нижнем этаже СредняяМаксимум на каждом уровне дерева СредняяВставить уровень в дерево Средняя
загружаем Python…
Вход
root=tree_node([7, None, -3])
Ожидается
[['', '7', ''], ['', '', '-3']]

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