题意:给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
解题思路
解法1:DFS
1.我们可以采用深度优先搜索的方式,枚举每一条从根节点到叶子节点的路径。当我们遍历到叶子节点,且此时路径和恰为目标和时,我们就找到了一条满足条件的路径
DFS伪代码:
public void dfs(原数据, 目标) {
if (终止条件) {
return;
}
/*
* 临时标记数据
*/
/*
* 是否为结果数据
*/
/*
* 遍历其他路径,针对于二叉树,就是左右子树,针对于图,则是四个方向
*/
/*
* 回退数据
*/
}
解题遇到的问题
无
后续需要总结学习的知识点
无
##解法1
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
class Solution {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
LinkedList<Integer> temp = new LinkedList<Integer>();
public List<List<Integer>> pathSum(TreeNode root, int target) {
dfs(root, target);
return ans;
}
public void dfs(TreeNode root, int target) {
if (root == null) {
return;
}
temp.add(root.val);
if (root.left == null && root.right == null && target == root.val) {
ans.add(new ArrayList<Integer>(temp));
}
dfs(root.left, target - root.val);
dfs(root.right, target - root.val);
temp.removeLast();
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
}
网友评论