【leetcode】112. Path Sum
2016-06-21 11:12
323 查看
一、题目描述
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
return true, as there exist a root-to-leaf path
题目解读:给出一个数sum,从树种寻找是否存在一个从根节点都叶子节点的值的和等于sum的路径
思路:递归的方法很容易解决
c++代码(12ms,22.49%)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
int total = 0;
if(root == NULL) //注意输入为[] 0的情况,是要返回false的
return false;
else if(root->left==NULL && root->right==NULL)
return root->val == sum;
else{
if(fabs(total) > fabs(sum)) //这步好像多余了,不过写上显得思路更清晰
//当值的大小已经大于sum时,是没有必要再继续算下去的,加上绝对值是应对负数的情况
return false;
else{
total+=root->val;
return hasPathSum(root->left,sum-total) || hasPathSum(root->right, sum-total);
}
}
}
};
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->2which sum is 22.
题目解读:给出一个数sum,从树种寻找是否存在一个从根节点都叶子节点的值的和等于sum的路径
思路:递归的方法很容易解决
c++代码(12ms,22.49%)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
int total = 0;
if(root == NULL) //注意输入为[] 0的情况,是要返回false的
return false;
else if(root->left==NULL && root->right==NULL)
return root->val == sum;
else{
if(fabs(total) > fabs(sum)) //这步好像多余了,不过写上显得思路更清晰
//当值的大小已经大于sum时,是没有必要再继续算下去的,加上绝对值是应对负数的情况
return false;
else{
total+=root->val;
return hasPathSum(root->left,sum-total) || hasPathSum(root->right, sum-total);
}
}
}
};
相关文章推荐
- TableViewCell选中一个后另外的取消选择
- zabbix3.0于centos7搭建
- 自动化测试一
- SQL Server存储过程数组参数
- 多线程编程(四)GCD
- jquery的uploadify插件实现的批量上传V3.2.1版
- (转)simple-framework(MaliSDK框架分析)
- 提高项目5-当年第几天
- iOS 实现时间线列表效果
- 深入理解HashMap
- 百度ueditor 视频编辑问题以及图片跟视频居中报错问题解决
- c++字符串大小写转换
- 【51CTO学院三周年】从无到有的IT之旅
- SQL Server2008函数大全(完整版)
- Java网络编程
- 8-12Navigator对象
- Java实现图片与Base64编码互转
- 两个有序数组的中位数Median of Two Sorted Arrays(很重要)
- 搭建eclipse、python开发环境
- AndroidStudio构建工具Gradle的帮助文档