【Description】
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
Example:
Given the below binary tree and sum = 22,
5
/ \
4 8
/ /
11 13 4
/ \ /
7 2 5 1
Return:
[
[5,4,11,2],
[5,8,4,5]
]
【Idea】
二叉树题基本是递归解万物?
easy版112,每次recursion少一个path node list的参数即可
【Solution】
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.result = []
def pathSum(self, root: TreeNode, sum: int) -> bool:
# DFS & recursion |
def recursion(root, path, cur_sum):
if not root:
return False
if not root.left and not root.right:
if cur_sum+root.val == sum:
path.append(root.val)
self.result.append(copy.deepcopy(path)) # 注意这里需要用深拷贝来append
# print(self.result)
if path:
path.pop()
recursion(root.left, path+[root.val,], cur_sum+root.val)
recursion(root.right, path+[root.val,], cur_sum+root.val)
recursion(root, [], 0)
return self.result