https://leetcode-cn.com/problems/path-sum-ii
常规做法,找到路径,然后看和是否等于sum。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
self.res = []
self.sum = sum
if not root:
return self.res
self.get_path(root,[root.val])
return self.res
def get_path(self, node, arr):
if not node.left and not node.right and sum(arr) == self.sum:
self.res.append(arr)
if node.left:
self.get_path(node.left, arr+[node.left.val])
if node.right:
self.get_path(node.right, arr+[node.right.val])
改了下,更快了:
class Solution:
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
self.res = []
if not root:
return self.res
self.get_path(root, [root.val], sum-root.val)
return self.res
def get_path(self, node, arr, num):
if not node.left and not node.right and num == 0:
self.res.append(arr)
if node.left:
self.get_path(node.left, arr+[node.left.val], num-node.left.val)
if node.right:
self.get_path(node.right, arr+[node.right.val], num-node.right.val)