您的位置:首页 > 职场人生

(面试题25题)LeetCode Path Sum II

2015-07-31 10:25 501 查看
class Solution {
private:
vector<vector<int>> ret;
public:
void pathsum(TreeNode* root, vector<int> &path, int &CurSum, int sum)
{
if(root == NULL)
{
return;
}

CurSum += root->val;
path.push_back(root->val);

bool IsLeaf = (root->left == NULL) && (root->right == NULL);
if(CurSum == sum && IsLeaf)
{
ret.push_back(path);
}

//如果不是叶子结点,则遍历它的子结点
if(root->left)
{
pathsum(root->left, path, CurSum, sum);
}
if(root->right)
{
pathsum(root->right, path, CurSum, sum);
}

//在返回到父结点之前,在路径上删除当前结点
//并在CurSum中减去当前结点的值
CurSum -= root->val;
path.pop_back();
}

vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<int> path;
int CurSum = 0;
pathsum(root, path, CurSum, sum);
//solve(root,sum,0,a);
return ret;
}
};
</int></int></int></int>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息