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.
题意:
给一个二叉树,只包括 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 = None
class 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