LeetCode 112. Path Sum
来源:互联网 发布:怪物猎人x数据库app 编辑:程序博客网 时间:2024/06/10 03:22
LeetCode 112. Path Sum
Description:
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.
Example:
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.
分析:
首先判断根节点是否为空,若为空,则返回false,表示肯定不能找到一条路径上的数之和等于sum;
若不空,则判断左右子树是否为空,若为空,则比较根节点的数是否等于sum,若为真,返回true;反之返回false;
若前面都不满足条件,则证明树的高度至少为2,递归左子树,将sum的值改成sum - root->val
;递归右子树,将sum的值改成sum - root->val
,即可求解。
代码如下:
#include <iostream>using namespace std;/** * 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; if (root->left == NULL && root->right == NULL) return sum == root->val ? true : false; return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val); }};// 构造二叉树int TreeNodeCreate(TreeNode* &tree) { int val; cin >> val; if (val < 0) // 小于0表示空节点 tree = NULL; else { tree = new TreeNode(val); // 创建根节点 tree->val = val; TreeNodeCreate(tree->left); // 创建左子树 TreeNodeCreate(tree->right);// 创建右子树 } return 0;}int main() { Solution s; TreeNode* tree; TreeNodeCreate(tree); int sum; cin >> sum; cout << s.hasPathSum(tree, sum) << endl; return 0;}
阅读全文
0 0
- LeetCode 112. Path Sum
- [LeetCode]112.Path Sum
- 【LeetCode】112.Path Sum
- [Leetcode] 112. Path Sum
- [leetcode] 112.Path Sum
- 112. Path Sum LeetCode
- Leetcode 112. Path Sum
- LeetCode *** 112. Path Sum
- leetcode-112. Path Sum
- Leetcode 112. Path Sum
- 112.[Leetcode]Path Sum
- LeetCode 112. Path Sum
- Leetcode 112. Path Sum
- 【leetcode】112. Path Sum
- Leetcode 112. Path Sum
- LeetCode - 112. Path Sum
- [Leetcode]112. Path Sum
- LeetCode 112. Path Sum
- 找出总分最高的学生
- @synthesize和@dynamic的区别
- D11
- win32开发(定时器)
- easy_install 和 pip 的安装及使用
- LeetCode 112. Path Sum
- sqlserver for xml path用法
- 纪念鲁宾逊诞生一百周年
- 如果一个网络请求类可能用到多次,可不可以用单例设计模式实现?
- [NOI2014]魔法森林
- Linux编译多个不同目录下的文件以及静态库、动态库的使用
- 马化腾、李彦宏、雷军,程序员国服三强谁的编程能力最牛?
- 第十三周项目三
- 初学iOS,刚看到控件的strong&weak问题,如果答的不对还请指正。首先有一点,在OC中,如果对象没有强引用,就会被自动释放,那么为什么控件还可以设为weak?