Разность по потомкам

Разность по потомкам

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


Report Page