Разность по потомкам
t.me/pythonlУсловие задачи: Дан корень двоичного дерева, верните сумму наклона каждого узла дерева.
Наклон узла дерева - это абсолютная разница между суммой всех значений узла левого поддерева и всех значений узла правого поддерева. Если узел не имеет левого дочернего элемента, то сумма значений узла левого поддерева обрабатывается как 0. Правило аналогично, если у узла нет правого дочернего элемента.
Пример:
Ввод: root = [1,2,3]
Вывод: 1
Ввод: root = [4,2,9,3,5,null,7]
Вывод: 15
class Solution:
def findTilt(self, root: Optional[TreeNode]) -> int:
self.total_tilt = 0
def calculate_tilt(node):
if not node:
return 0
left_sum = calculate_tilt(node.left)
right_sum = calculate_tilt(node.right)
tilt = abs(left_sum - right_sum)
self.total_tilt += tilt
return left_sum + right_sum + node.val
calculate_tilt(root)
return self.total_tilt