Sum Root to Leaf Numbers

最自然的思路觉得还是利用DFS由浅入深的去把这些数字提取出来,这里可以一个数组去记录这些数字,不过为了代码简洁使用了静态变量sumOfRoot

class Solution(object):
    sumOfRoot = 0

    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root:
            return 0

        self.helper(root, 0)
        return self.sumOfRoot

    def helper(self, root, base):
        if not root.left and not root.right:
            self.sumOfRoot += (10 * base + root.val)
            return 

        if root.left:
            self.helper(root.left, 10 * base + root.val)
        if root.right:
            self.helper(root.right, 10 * base + root.val)
        return

下面是利用栈迭代DFS的版本

class Solution(object):
    def sumNumbers(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        if not root:
            return 0

        stack = [[root, 0]]
        result = 0
        while stack:
            node, base = stack.pop()
            if node.left:
                stack.append([node.left, 10 * base + node.val])
            if node.right:
                stack.append([node.right, 10 * base + node.val])
            if not node.left and not node.right:
                result += (10 * base + node.val)
        return result

results matching ""

    No results matching ""