129. Sum Root to Leaf Numbers

方法1:
最容易想到的就是递归方法,保持一个response,每到一个叶节点就把结果与res相加

class Solution(object):
    def sumNumbers(self, root):
        self.res = 0
        self.dfs(root, 0)
        return self.res

    def dfs(self, root, value):
        if root:
            self.dfs(root.left, value*10+root.val)
            self.dfs(root.right, value*10+root.val)
            if not root.left and not root.right:
                self.res += value*10 + root.val

方法2:
还可以用迭代的方法,思路和递归一样,不过这里用list实现了栈的操作

class Solution(object):
    def sumNumbers(self, root):
        if not root:
            return 0
        stack, res = [(root, root.val)], 0
        while stack:
            node, value = stack.pop()
            if node:
                if not node.left and not node.right:
                    res += value
                if node.right:
                    stack.append((node.right, value*10+node.right.val))
                if node.left:
                    stack.append((node.left, value*10+node.left.val))
        return res

你可能感兴趣的:(129. Sum Root to Leaf Numbers)