问题描述:
Path Sum
Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
For example:Given the below binary tree and
sum = 22
,
5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
return true, as there exist a root-to-leaf path 5->4->11->2
which sum is 22.
解决方案: 从根节点依次扫描,每次减去父亲节点的值,直到直到叶子节点且减去之后值为0 即可。
package leetcode;
public class hasPathSum {
/**
* @param args
*/
public static boolean hasPathSum(TreeNode root, int sum){
if(root == null){
return false;
}
if(root.right == null && root.left == null){
if(sum - root.val == 0)
{return true;}
}
return hasPathSum(root.left , sum-root.val) ||
hasPathSum(root.right, sum-root.val);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeNode root = new TreeNode(5);
TreeNode rl = new TreeNode(4);
TreeNode rr = new TreeNode(8);
TreeNode rll = new TreeNode(11);
TreeNode rlll = new TreeNode(7);
TreeNode rllr = new TreeNode(2);
TreeNode rrl = new TreeNode(13);
TreeNode rrr = new TreeNode(4);
TreeNode rrrr = new TreeNode(1);
root.left = rl;
root.right = rl;
rl.left = rll;
rll.left = rlll;
rll.right = rllr;
rr.left = rrl;
rr.right = rrr;
rrr.right = rrrr;
boolean flag = hasPathSum(root, 22);
System.out.println(flag);
}
}
给出的是完整的代码,可以自己调试。
提交时只需要 hasPathSum 这个方法。
运行结果:
114 / 114 test cases passed.
| Status: Accepted |
Runtime:
1 ms
|
Submitted:
0 minutes ago
|