题目描述:
解题方法: 递归使用深度优先搜索
时间复杂度: O(n^2)
空间复杂度; O(n)
class Solution {
public:
vector<vector<int>>res;
vector<int>temp;
void recur(TreeNode*root, int val)
{
if(root == nullptr) return;
temp.push_back(root->val);
val = val-root->val;
// 满足条件,将当前路径存储
if(root->left == nullptr && root->right == nullptr && val == 0)
{
res.push_back(temp);
}
recur(root->left, val);
recur(root->right, val);
// 不满足 在回溯阶段会逐步释放temp
temp.pop_back();
}
vector<vector<int>> pathSum(TreeNode* root, int target) {
recur(root, target);
return res;
}
};