leetCode(40):Path Sum 分类: leetCode 2015-07-17 16:46 125人阅读 评论(0) 收藏
2015-07-17 16:46
435 查看
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
搜索支路的方法
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.
搜索支路的方法
/** * 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 findPath(TreeNode* root, int nowSum,const int sum) { nowSum += root->val;//当前值 //如果已经是叶子结点,且和相等,则直接返回真 if (!root->left && !root->right && nowSum == sum) return true; bool found_left = false; bool found_right = false; if (root->left) //左子树不为空,则在左子树中搜索 found_left = findPath(root->left, nowSum, sum); if (!found_left && root->right) //如果左子树没找到,则在右子树中搜索 found_right = findPath(root->right, nowSum, sum); return found_left || found_right;//只要在一条支中上找到则返回真 } bool hasPathSum(TreeNode* root, int sum) { if (root == NULL) return false; findPath(root, 0, sum); } };
相关文章推荐
- 在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static
- 收藏网站24
- java 处理下载文件名显示乱码问题
- Sublime Text使用
- style、currentStyle、getComputedStyle区别介绍
- LeetCode - Basic Calculator & Basic Calculator II
- CodeForces 550B
- EnterCriticalSection 和 TryEnterCriticalSection
- Roman to Integer
- 和MM逛南邮
- Project Euler:Problem 73 Counting fractions in a range
- 算法の归并排序
- leetCode 71.Simplify Path(化简路径) 解题思路和方法
- Fastjson序列化map时,保留map的进出栈顺序的方法
- 《Effective C++》——条款20:宁以pass-by-reference-to-const替换pass-by-value
- bash数组
- zabbix监控之redis自动发现并监控
- spurious wakeup虚假唤醒(待总结)
- fiddler进行弱网测试
- https://github.com/Bilibili/ijkplayer