leetcode113:
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。
算法设计:
用迭代算法,从树的根节点往左,往右搜索,直到加和为sum时返回,否则返回空list。
源代码:
# 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 not root: return []
if root.left == None and root.right == None:
if sum == root.val:
return [[root.val]]
else:
return []
a = self.pathSum(root.left, sum - root.val) + self.pathSum(root.right, sum - root.val)
return [[root.val] + i for i in a]