思路:
dfs遍历每一个路径
用now tempsun和tempnode分别记录当前节点,累计和,以及累计节点
叶子节点判断结束
否则有左右孩子的话就继续dfs
注意root为none的情况
src:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def pathSum(self, root: Optional[TreeNode], targetSum: int) -> List[List[int]]:
if root is None:
return []
ans = []
def dfs(now, tempsum, tempnode):
# 若到达叶子节点
if now.left is None and now.right is None:
if tempsum == targetSum:
ans.append(tempnode)
return
# 若未到达叶子节点
if now.left is not None:
new_tempnode = copy.deepcopy(tempnode)
new_tempnode.append(now.left.val)
dfs(now.left, tempsum + now.left.val, new_tempnode)
if now.right is not None:
new_tempnode = copy.deepcopy(tempnode)
new_tempnode.append(now.right.val)
dfs(now.right, tempsum + now.right.val, new_tempnode)
dfs(root, root.val, [root.val])
return ans
总结:
树的dfs遍历