Ctrl K

Суммарный перекос дерева

Лёгкая
Дан корень root двоичного дерева с целыми значениями в вершинах. *Перекос* вершины — это модуль разности между суммой всех значений в её левом поддереве и суммой всех значений в правом. Если какого-то поддерева нет, его сумма считается равной 0. У листа перекос, соответственно, 0. Верните сумму перекосов всех вершин дерева. Для пустого дерева ответ 0.
Пример 1
root=tree_node([5, 6, 1]) → 5

У листьев 6 и 1 перекос 0. У корня слева сумма 6, справа 1, перекос |6 − 1| = 5. Итого 5.

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

У вершины 4 слева 3, справа −1: перекос |3 − (−1)| = 4. У корня слева сумма 4 + 3 − 1 = 6, справа ничего: перекос 6. Итого 4 + 6 = 10.

Пример 3
root=tree_node([]) → 0

В пустом дереве перекашиваться нечему — 0.

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

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