Leetcode:Path Sum与Path Sum II
2014-12-01 14:20
330 查看
Path Sum:
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 II:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:
Given the below binary tree and
return
实现代码:
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.
递归,实现代码:
/** * Definition for binary tree * 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 0; if(root->left==NULL&&root->right==NULL) return root->val==sum; return hasPathSum(root->left,sum-root->val)|| hasPathSum(root->right,sum-root->val); } };Path
Sum II:
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:
Given the below binary tree and
sum = 22,
5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5] ]
实现代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int> > pathSum(TreeNode *root, int sum) { vector<vector<int> > res; vector<int> path; findPath(root, sum, path, res); return res; } void findPath(TreeNode* root, int sum, vector<int> path, vector<vector<int> > & res) { if(root==NULL) return; path.push_back(root->val); if(sum == root->val && root->left==NULL && root->right==NULL) { res.push_back(path); path.pop_back(); return; } if (root->left) findPath(root->left, sum-root->val,path,res); if (root->right) findPath(root->right,sum-root->val,path,res); path.pop_back (); } };
相关文章推荐
- [LeetCode] Unique Paths && Unique Paths II && Minimum Path Sum (动态规划之 Matrix DP )
- 【LeetCode with Python】 Path Sum II
- Leetcode-113. Path Sum II
- [leetcode] Path Sum II
- #leetcode#Path Sum II
- Leetcode:Path Sum II
- [leetcode]Path Sum II
- Leetcode NO.113 Path Sum II
- [LeetCode] Path Sum II
- LeetCode 113: Path Sum II 二叉树遍历
- leetcode — path-sum-ii
- (面试题25题)LeetCode Path Sum II
- leetcode 113. Path Sum II
- Leetcode_Path Sum II
- [LeetCode] Path Sum II 解题报告
- LeetCode | Path Sum II
- LeetCode_Path Sum II
- leetcode Path Sum II
- Leetcode Path Sum II
- 【LeetCode】Path Sum II