class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
if (root == NULL)
return res;
DFS(root, sum);
return res;
}
void DFS(TreeNode* root, int sum) {
if (root == NULL)//递归结束的条件
return;
cur.push_back(root->val);
if (!root->left && !root->right)//叶子结点
{
if (sum - root->val == 0)
res.push_back(cur);
}
DFS(root->left, sum - root->val);//已经完成了左子树的路径查找
DFS(root->right, sum - root->val);//已经完成了右子树的路径查找
cur.pop_back();//回溯
}
private:
vector<int>cur;
vector<vector<int>>res;
};
路径总和ⅠⅡ(回溯法)
最新推荐文章于 2020-08-21 22:51:49 发布