您的位置:首页 > 其它

【LEETCODE】112-Path Sum

2015-12-25 10:50 246 查看
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:
Given the below binary tree and sum = 22,
5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1
return true, as there exist a root-to-leaf path
5->4->11->2 which sum is 22.

题意:
给一个二叉树和一个和,判断是否存在一个从root到leaf的path,使得其中的所有值的和等于sum

思路:
遍历每个path,计算sum,直到等于22或者遍历结束
或者遇到一个点,sum减去节点的值,到leaf时剩余0则True,否则False

参考: http://www.cnblogs.com/CheeseZH/p/4034291.html
# 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 hasPathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""

if root is None:
return False

sum-=root.val              #遇到一个点,sum减去节点的值

if sum==0 and root.left==None and root.right==None:         #到leaf时剩余0则True,否则False
r=True
else:
r=False

return r or self.hasPathSum(root.left, sum) or self.hasPathSum(root.right, sum)      #<span style="font-family: Arial, Helvetica, sans-serif;">直到leaf</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: