Ctrl K

Сумма двоюродных в дереве

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

У корня и у узлов 2 и 8 двоюродных нет — они становятся 0. На глубине 2 узлы 1 и 3 — дети 2, а узел 5 — ребёнок 8. Поэтому 1 и 3 заменяются на 5, а 5 — на 1 + 3 = 4.

Пример 2
root=tree_node([4, 7, None, 2, 9]) → [0, 0, None, 0, 0]

На каждой глубине все узлы — дети одного родителя, двоюродных нет ни у кого, и все значения становятся 0.

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

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