LC 0129 [M] Sum Root to Leaf Numbers - ALawliet/algorithms GitHub Wiki

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumNumbers(self, root: Optional[TreeNode]) -> int:
        def preorder(node, pathSum):
            if not node: return 0
            
            pathSum = pathSum*10 + node.val
            
            if not node.left and not node.right:
                return pathSum
            
            L = preorder(node.left, pathSum)  # left path subtree
            R = preorder(node.right, pathSum) # right path subtree
            
            return L + R
        
        return preorder(root, 0)
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sumNumbers(self, root: TreeNode) -> int:
        return self.helper(root, 0)
    
    def helper(self, node, pathSum):
        if node is None:
            return 0
        pathSum = pathSum*10 + node.val
        if node.left is None and node.right is None:
            return pathSum
        return self.helper(node.left, pathSum) + self.helper(node.right, pathSum)