`来自一名菜鸡的写法``java
import java.util.*;
/*
- public class TreeNode {
- int val = 0;
- TreeNode left = null;
- TreeNode right = null;
- }
- /
public class Solution {
/**
*
* @param root TreeNode类
* @param sum int整型
* @return bool布尔型
*/
int target;
public boolean hasPathSum (TreeNode root, int sum) {
if(root == null) return false;
this.target=sum;
return dfs(root,0);
}
public boolean dfs(TreeNode root,int sum){
sum+=root.val;
// 到达叶子节点,且路径合法
if(root.left==null && root.right==null && sum==target) return true;
// 递归左子树
if(root.left!=null){
boolean leftDFS = dfs(root.left, sum);
// 只要左边有一个可以,直接返回。终止dfs程序
if(leftDFS) return true;
}
// 递归右子树
if(root.right!=null){
boolean rightDfs = dfs(root.right, sum);
// 只要右边有一个可以,直接返回。终止dfs程序
if(rightDfs) return true;
}
// 程序执行到此处,说明经过dfs整个树,都没有找到一条合法的路径。
return false;
}}
```



京公网安备 11010502036488号