Ctrl K

Столбцы дерева с ничьими

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

В столбце 0 стоят корень 5 (строка 0), а также 4 и 6 — обе в строке 2. Корень выше, поэтому он первый, а 4 и 6 делят одну клетку и идут по возрастанию.

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

Здесь 6 и 4 поменялись местами, но они в одной клетке, поэтому ответ тот же.

Пример 3
root=tree_node([7, None, 3]) → [[7], [3]]

Корень в столбце 0, его правый ребёнок — в столбце 1.

Ограничения
  • 1 ≤ число вершин ≤ 1000
  • 0 ≤ Node.val ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДерево по столбцам СредняяПара в дереве поиска ЛёгкаяПоддерево над нижним рядом СредняяГде сходятся самые глубокие листья СредняяСколько шагов между ключами Средняя
загружаем Python…
Вход
root=tree_node([5, 2, 8, 1, 4, 6, 9])
Ожидается
[[1], [2], [5, 4, 6], [8], [9]]

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