Path Sum[LeetCode]
6147 ワード
Problem Description: http://oj.leetcode.com/problems/path-sum/
Pretty.
Pretty.
1 /**
2 * Definition for binary tree
3 * struct TreeNode {
4 * int val;
5 * TreeNode *left;
6 * TreeNode *right;
7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8 * };
9 */
10 class Solution {
11 public:
12 vector<int> getSums(TreeNode *root) {
13 vector<int> sums;
14
15 if(root->left == NULL && root->right == NULL)
16 sums.push_back(root->val);
17
18 if(root->left != NULL){
19 vector<int> left_sums;
20 left_sums = getSums(root->left);
21 for(auto item : left_sums) {
22 sums.push_back(item + root->val);
23 }
24 }
25
26 if(root -> right != NULL) {
27 vector<int> tmp_sums;
28 tmp_sums = getSums(root->right);
29 for(auto item : tmp_sums) {
30 sums.push_back(item + root->val);
31 }
32 }
33
34 return sums;
35 }
36
37 bool hasPathSum(TreeNode *root, int sum) {
38 // Note: The Solution object is instantiated only once and is reused by each test case.
39 if(root == NULL)
40 return false;
41
42 vector<int> sums = getSums(root);
43
44 for(auto item : sums) {
45 if(item == sum)
46 return true;
47 }
48
49 return false;
50 }
51 };