题意理解
给定一个二叉树和一个值,找到所有二叉树的路径,其和等于这个值。
问题分析
回溯
其他
好题
链接
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> results; //全部解
if(!root) return results;
vector<int> cur_result; //部分解
pathSumCore(root, sum, cur_result, results);
return results;
}
void pathSumCore(TreeNode* root, int sum, vector<int> &cur_result, vector<vector<int>> &results) {
sum=sum-root->val; //目标和减去根值
cur_result.push_back(root->val); //补充进部分解
if(sum==0 && !root->left && !root->right) { //终止条件
results.push_back(cur_result);
return;
}
if(root->left) { //左子树
pathSumCore(root->left, sum, cur_result, results);
cur_result.pop_back(); //回滚
}
if(root->right) { //右子树
pathSumCore(root->right, sum, cur_result, results);
cur_result.pop_back(); //回滚
}
}