您的位置:首页 > 其它

LeetCode 112. Path Sum (二叉树路径之和)

2017-07-04 06:17 411 查看

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.

 

题目标签:Tree

  这道题目给了我们一个二叉树和一个sum, 让我们判断这个二叉树是否有至少一条path 的之和是等于sum的。利用preOrder 来遍历树,每次用sum 减去当前点的值,每当遇到一个leaf node 的时候检查sum 是不是等于0, 返回ture 和false。利用 || 来return 所有的boolean 值, 至少有过一个true,一个path之和等于sum, 总的boolean 就是true。

 

Java Solution:

Runtime beats 13.93% 

完成日期:07/03/2017

关键词:Tree

关键点:当是leaf node 的时候检查sum;利用 || return两个children的返回值

 

 

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution
{
public boolean hasPathSum(TreeNode root, int sum)
{
if(root == null)
return false;

sum -= root.val;

if(root.left == null && root.right == null)
{
if(sum == 0)
return true;
else
return false;
}

return hasPathSum(root.left, sum) || hasPathSum(root.right, sum);
}
}

参考资料:

http://www.cnblogs.com/springfor/p/3879825.html

 

LeetCode 算法题目列表 - LeetCode Algorithms Questions List

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: