给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
解法一: 递归
思路: 将结果存在数组中,左右分别求,再合并。利用列表推导式
class Solution(object):
def hasPathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""
if not root: return False
else: return sum in self.traverse_sum(root)
def traverse_sum(self, root):
if not root.left and not root.right:
return [int(root.val)]
left, right =[], []
if root.left:
left = [int(root.val) + int(x) for x in self.traverse_sum(root.left)]
if root.right:
right = [int(root.val) + int(x) for x in self.traverse_sum(root.right)]
return left + right