此题是给定目标想要找到从root到leaf的路径使得和为target。这题的递归划分很明显,就是左右子树然后和target-root.val。此外学习到一个小trick,就是在list中添加任意位置值的时候可以用list.insert(index, val)。
代码如下:
# 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]]
"""
if root == None:
return []
if root.left == None and root.right == None:
if root.val == sum:
return [[root.val]]
else:
return []
left_que = self.pathSum(root.left, sum-root.val)
right_que = self.pathSum(root.right, sum-root.val)
result = []
for temp_que in left_que:
temp_que.insert(0, root.val)
result.append(temp_que)
for temp_que in right_que:
temp_que.insert(0, root.val)
result.append(temp_que)
return result