113. 路径总和 II

Introduction

Question:113. 路径总和 II

Analysis

比较简单的题目,直接遍历并维护一个vec存储当前路径上的所有元素以及其和即可。

Implement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
vector<vector<int>> res;
if (root == nullptr) return res;
vector<int> vec;
pathSum(res, vec, root, targetSum);
return res;
}
void pathSum(vector<vector<int>> &res, vector<int> &vec, TreeNode *root, int targetSum) {
vec.push_back(root->val);
if (root->left == nullptr && root->right == nullptr && root->val == targetSum) {
res.push_back(vec);
}
if (root->left) {
pathSum(res, vec, root->left, targetSum - root->val);
}
if (root->right) {
pathSum(res, vec, root->right, targetSum - root->val);
}
vec.pop_back();
}