【树】【回溯】leetcode_113_路径总和II
class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
vector<int> path;
vector<vector<int>> result;
if (root == nullptr) return result;
path.push_back(root->val);
traversal(root, targetSum-root->val, path, result);
return result;
}
void traversal(TreeNode *cur, int count,vector<int> &path,vector<vector<int>> &result){
if (cur->left == nullptr && cur->right == nullptr && count == 0){
result.push_back(path);
return;
}
if (cur->left){
path.push_back(cur->left->val);
count -= cur->left->val;
traversal(cur->left, count, path, result);
count += cur->left->val;
path.pop_back();
}
if (cur->right){
path.push_back(cur->right->val);
count -= cur->right->val;
traversal(cur->right, count, path, result);
count += cur->right->val;
path.pop_back();
}
}
};