Path Sum
题目:Get all the paths(always starts from the root) in a binary tree,whose sum would be equal to given value.
void pathSumHelper(vector<int> &path,vector<vector<int>> &result,TreeNode *root,int sum){
if(root == NULL) return;
path.push_back(root->val);
if(root->val == sum)
result.push_back(path);
pathSumHelper(path,result,root->left,sum - root->val);
pathSumHelper(path,result,root->right,sum - root->val);
path.pop_back();//注意此步不可少.
}
vector<vector<int>> pathSum(TreeNode *root,int sum){
vector<int> path;
vector<vector<int>> result;
pathSumHelper(path,result,root,sum);
return result;
}
Path Sum2
题目:Get all the paths (always starts from the root and ends at leaf)in a binary tree,whose sum would be equal to given value.
void pathSumHelper(vector<int> &path,vector<vector<int>> &result,TreeNode *root,int sum){
if(root == NULL) return;
path.push_back(root->val);
if(root->val == sum && root->left == NULL && root->right == NULL)
result.push_back(path);
pathSumHelper(path,result,root->left,sum - root->val);
pathSumHelper(path,result,root->right,sum - root->val);
path.pop_back();
}
vector<vector<int>> pathSum(TreeNode *root,int sum){
vector<int> path;
vector<vecotor<int>> result;
pathSumHelper(path,result,root,sum);
return result;
}