PU Sum Root to Leaf Numbers

Jan 01, 1970

Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

An example is the root-to-leaf path 1->2->3 which represents the number 123.

Find the total sum of all root-to-leaf numbers.

For example,

    1
   / 
  2   3
  • The root-to-leaf path 1->2 represents the number 12.
  • The root-to-leaf path 1->3 represents the number 13.
  • Return the sum = 12 + 13 = 25.

Python Solution:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root: return 0
        cur = []
        res = [0]
        def preorder(root):
            cur.append(str(root.val))
            if not root.left and not root.right:
                res[0] += int(''.join(cur))
            if root.left: preorder(root.left)
            if root.right: preorder(root.right)
            cur.pop()
        preorder(root)
        return res[0]

Python Solution 2:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        def preorder(root, sum):
            if not root: return 0
            val = sum * 10 + root.val
            if not root.left and not root.right:
                return val
            return preorder(root.left, val) + preorder(root.right, val)
        return preorder(root, 0)

Summary:

  • Solution 2 is much better.

LeetCode: 129. Sum Root to Leaf Numbers