
112. Path Sum
# 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 == None:
return False
if root.left == None and root.right == None and root.val == sum:
return True
res = False
if root.left:
res = self.hasPathSum(root.left, sum-root.val)
if res:
return True
if root.right:
res = self.hasPathSum(root.right, sum-root.val)
return res
113. Path Sum II

113. Path Sum II
# 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 pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
res = []
trace = []
self.DFS(root, sum, res, trace, 0)
return res
def DFS(self, root, sum, res, trace, now):
if root == None:
return
trace.append(root.val)
if root.val == sum and root.left == None and root.right == None:
res.append(trace[:])
trace.pop()
return
if root.left:
self.DFS(root.left, sum-root.val, res, trace, now)
if root.right:
self.DFS(root.right, sum-root.val, res, trace, now)
trace.pop()