Ctrl K

Самая частая сумма поддерева

Средняя
Дан корень root двоичного дерева. Для каждого узла посчитайте сумму его поддерева — значение самого узла плюс значения всех его потомков. Среди всех этих сумм найдите те, что встречаются чаще всего. Если такая сумма одна, верните список из неё одной; если несколько сумм делят первое место, верните их все. Порядок в ответе не важен.
Пример 1
root=tree_node([3, 1, -4]) → [1, -4, 0]

Суммы поддеревьев: у листа 1 — 1, у листа -4 — -4, у корня — 3 + 1 - 4 = 0. Каждая встречается по разу, поэтому в ответе все три.

Пример 2
root=tree_node([6, 2, -2]) → [2, -2, 6]

Суммы: 2, -2 и 6 + 2 - 2 = 6. Снова все по разу.

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

Листья дают 2 и 2, узел 6 с левым ребёнком 2 — 8, корень — 4 + 2 + 8 = 14. Чаще всех встречается 2.

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

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