难度:中等
一、题目描述:
二、解题分析:
1、非递归
class Solution:
def pathSum(self, root: TreeNode, sum_: int) -> List[List[int]]:
if not root: return []
stack = [([root.val], root)]
res = []
while stack:
tmp, node = stack.pop()
if not node.right and not node.left and sum(tmp) == sum_:
res.append(tmp)
if node.right:
stack.append((tmp + [node.right.val], node.right))
if node.left:
stack.append((tmp + [node.left.val], node.left))
return res
2、非递归
class Solution:
def pathSum(self, root: TreeNode, sum_: int) -> List[List[int]]:
def helper(root, tmp, sum_):
if not root:
return
if not root.left and not root.right and sum_ - root.val == 0:
tmp += [root.val]
res.append(tmp)
helper(root.left, tmp + [root.val], sum_ - root.val)
helper(root.right, tmp + [root.val], sum_ - root.val)
res = []
helper(root, [], sum_)
return res