题解 | #二叉树中是否存在节点和为指定值的路径#
二叉树中是否存在节点和为指定值的路径
http://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c
`来自一名菜鸡的写法``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; }
}
```