思路
解法1:自顶向下的DFS
枚举每个节点作为根节点,向下搜寻所有的路径中满足 : 和恰好为target的路径。
此时我们需要两个递归函数,一个用来枚举所有点,一个用来寻找合法路径👇
1.dfs(node)函数 : 用来枚举所有节点作为根节点
P4065.路径总和Ⅲ
LeetCode 437. 路径总和Ⅲ
题目描述
给定一棵二叉树的层序遍历序列和一个整数 targetSum。
请你求出该二叉树中节点值之和等于 targetSum 的路径数量。
路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的,也就是说只能从父节点到子节点。
其中,层序遍历序列中的整数表示节点值,null 表示空节点。
如果 n = 0,表示二叉树为空。
输入描述
第一行输入一个整数 n,表示二叉树层序遍历序列的长度。
第二行输入 n 个元素,表示二叉树的层序遍历结果。
相邻两个元素之间用一个空格隔开。
其中:
第三行输入一个整数 targetSum,表示目标路径和。
如果 n = 0,表示二叉树为空,此时没有第二行层序遍历序列输入,直接输入 targetSum。
输出描述
输出一个整数,表示二叉树中路径和等于 targetSum 的路径数量。
样例 1
输入
11
10 5 -3 3 2 null 11 3 -2 null 1
8
输出
3
样例解释
该输入表示如下二叉树:
10
/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
和等于 8 的路径共有 3 条,分别为:
5 -> 3
5 -> 2 -> 1
-3 -> 11
因此输出 3。
样例 2
输入
13
5 4 8 11 null 13 4 7 2 null null 5 1
22
输出
3
样例解释
该输入表示如下二叉树:
5
/ \
4 8
/ / \
11 13 4
/ \ / \
7 2 5 1
和等于 22 的路径共有 3 条,因此输出 3。
样例 3
输入
0
8
输出
0
样例解释
n = 0,表示二叉树为空,不存在任何路径,因此输出 0。
数据范围
二叉树的节点个数范围是 [0, 1000]。
节点值满足:
-10^9 <= Node.val <= 10^9
目标路径和满足:
-1000 <= targetSum <= 1000