Distribute Coins in Binary Tree LeetCode solution in Python
1# Definition for a binary tree node.2# class TreeNode:3# def __init__(self, val=0, left=None, right=None):4# self.val = val5# self.left = left6# self.right = right7class Solution:8def distributeCoins(self, root: Optional[TreeNode]) -> int:910def dfs(root):11if not root:12return 0, 01314net_left, left_walk = dfs(root.left)15net_right, right_walk = dfs(root.right)1617# if any node has extra or deficiency in both cases there has to be a walk of abs(extra) or abs(deficiency)1819return net_left + net_right + (root.val - 1), left_walk + right_walk + abs(20net_left21) + abs(net_right)2223return dfs(root)[1]