描述
该题来自于力扣第113题
分析
典型的dfs了,函数参数应该有
当前结点,前面的路径以及剩下的和(总和减去前面路径的和)
即dfs(root, sum, path)
,接下来需要考虑什么是否路径正确,以及函数退出条件。
显然当root
没有左右结点,且root
的值等于sum
时,表示路径总和等于给的总和,此时path
添加root
结点就是一条目标路径;
而当root
有左节点或右节点时,显然继续递归,这时现将path
路径添加上root
结点,然后递归左子树dfs(root.left, sum - root.val, path)
,右子树dfs(root.left, sum - root.val, path)
;注意当左右子树都遍历完后,表示以root
为结点的子树遍历完成了,此时path
需要回溯到之前的状态,保证遍历root
的兄弟结点时,root
已经不在path
中了。
最后递归结束条件即可。
代码
1 | class Solution: |