您的位置:首页 > 其它

LeetCode Path Sum II

2014-03-11 19:39 330 查看
没什么新意,就是在遍历到叶子节点的时候把一个结果存入结果集中,注意恢复临时结果。

void pathSumRecursive(TreeNode *root,int sum,vector<int> &oneresult,vector<vector<int> > &ret)
{
if (root->left==NULL&&root->right!=NULL)
{
oneresult.push_back(root->val);
pathSumRecursive(root->right,sum - root->val,oneresult,ret);
oneresult.pop_back();
}
else
{
if (root->left!=NULL&&root->right==NULL)
{
oneresult.push_back(root->val);
pathSumRecursive(root->left,sum - root->val,oneresult,ret);
oneresult.pop_back();
}
else
{
if (root->left!=NULL&&root->right!=NULL)
{
oneresult.push_back(root->val);
pathSumRecursive(root->left,sum - root->val,oneresult,ret);
oneresult.pop_back();
oneresult.push_back(root->val);
pathSumRecursive(root->right,sum - root->val,oneresult,ret);
oneresult.pop_back();
}
else
{
if(sum == root->val)
{
oneresult.push_back(root->val);
ret.push_back(oneresult);
oneresult.pop_back();
}
else
return ;
}
}
}
}
vector<vector<int> > pathSum(TreeNode *root, int sum) {
vector<int> temp;
vector<vector<int> > ret;
if(root==NULL)
return ret;
pathSumRecursive(root,sum,temp,ret);
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: