没什么新意,就是在遍历到叶子节点的时候把一个结果存入结果集中,注意恢复临时结果。
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;
}
递归遍历树寻找路径和等于目标值的方法

本文介绍了一种通过递归遍历树结构,寻找路径和等于给定目标值的算法。该算法从根节点开始,逐级向下遍历,将符合条件的路径结果存入集合中,并在遍历过程中进行结果恢复。
1199

被折叠的 条评论
为什么被折叠?



