【LEETCODE】129-Sum Root to Leaf Numbers [Python]

来源:互联网 发布:虚拟机的linux不能启动 编辑:程序博客网 时间:2024/06/15 12:23

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 number123.

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

For example,

    1

   / \

  2   3


The root-to-leaf path 1->2 represents the number12.

The root-to-leaf path 1->3 represents the number13.

Return the sum = 12 + 13 = 25.


题意:

给一个二叉树,只包括 0-9,每一个 root-to-leaf 路径可以代表一个数字

返回 所有 root-to-leaf 相应数字的和

上例有两条路径,分别代表数字 12,13,则总和为 12 + 13 = 25


思路:

遍历每个root-to-leaf 路径,记录每个路径所代表的数字,并加到sum


参考:

http://bookshadow.com/weblog/2016/01/07/leetcode-sum-root-to-leaf-numbers/


Python:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def sumNumbers(self, root):        """        :type root: TreeNode        :rtype: int        """                if root is None:            return 0                return self.dfs(root,0)        def dfs(self,root,val):                val = val*10+root.val                   #上一层的值val传递过来乘以10,再加上当前节点的值                if (root.left or root.right) is None:            return val                    sums=0                                  #记录总和                        if root.left:            sums+=self.dfs(root.left,val)        if root.right:            sums+=self.dfs(root.right,val)        return sums



0 0