您的位置:首页 > 其它

【leetcode】【91.6】【M】Sum Root to Leaf Numbers

2015-11-19 18:28 423 查看
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
.

还是得用递归做

开始的时候总是出问题,关键就在于,如果输入是12345的时候,13对应的是13,而不是130

也就是说不能按照每一层来算,因为同样是1,在124这条路径上,1表示一百,在13这条路径上,表示的是10

关键点就在于,什么时候把当前结果加到总的结果上——应该是到叶子节点的时候,再一起加上去。用summ表示当前这条路径上的当前结果。只有这样,才能通过参数传进去。

# 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 __init__(self):

self.res = 0

def dfs(self,root,summ):

if root == None:

return

summ = root.val + summ*10

if root.left:

self.dfs(root.left,summ)

if root.right:

self.dfs(root.right,summ)

if root.left == None and root.right == None:

self.res += summ

#print root.val,summ

def sumNumbers(self, root):

self.dfs(root,0)

#print self.res

return self.res

"""

:type root: TreeNode

:rtype: int

"""


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: