[leetcode] 112.Path Sum
2015-07-01 11:23
316 查看
题目:
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.
题意:
给定一棵树,查找是否存在从根节点到叶子节点的一个路径,路径上元素之和等于一个给定值。
思路:
采用递归的思路进行解决,将给定值减去当前根节点的值,然后作为给定值递归左子树跟右子树。
以上。
代码如下:
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.
题意:
给定一棵树,查找是否存在从根节点到叶子节点的一个路径,路径上元素之和等于一个给定值。
思路:
采用递归的思路进行解决,将给定值减去当前根节点的值,然后作为给定值递归左子树跟右子树。
以上。
代码如下:
/** * 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) { if(root == NULL)return false; return PathSum(root, sum); } bool PathSum(TreeNode* root, int sum) { if(root->left == NULL && root->right == NULL){ if(root->val != sum)return false; else return true; } else if(root->left != NULL && PathSum(root->left,sum - root->val))return true; else if(root->right != NULL && PathSum(root->right,sum - root->val))return true; else return false; } };
相关文章推荐
- Shell脚本之监视指定进程的运行状态
- 打开系统设置
- Android TV
- malloc()和calloc()和 new的功能介绍
- js基础
- Lua 环境结构 --Linux
- 资源释放的问题
- VS2012 加载工程失败PACKAGE “VISUAL C++ PACKAGE” FAILED TO LOAD
- DEDECMS 在linux下问题
- strotol用法
- Summary Ranges
- 欢迎使用CSDN-markdown编辑器
- 解决 ECSHOP v273 产品详情页面评论不显示的问题
- uitableview中刷新单个section和row
- WEB前端网页返回代码常见值
- django 实现 group by
- 编译安装PHP-GD
- Android 百分比布局库(percent-support-lib) 解析与扩展
- Spring2.5学习4.1_AOP
- Android 判断某一个类是否存在任务栈里面