您的位置:首页 > 其它

[leetcode]113. Path Sum II (medium)

2016-11-12 19:19 459 查看
题目:

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For example:
Given the below binary tree and 
sum
= 22
,
5
/ \
4   8
/   / \
11  13  4
/  \    / \
7    2  5   1


return

[
[5,4,11,2],
[5,8,4,5]
]

解题思路:

同path sum思路差不多,不过区别是这次要记录sum=given sum时的路径。

所以在每次dfs时用一个vector保存各个path的路径就可以了。

代码

class Solution {

public:

vector<vector<int>> m;

void dfs(TreeNode* root,int s,int c,vector<int> v)

{

c=c+root->val;

v.push_back(root->val);

if(root->left==NULL&&root->right==NULL)

{

if(c==s)

{

// cout<<c<<endl;

m.push_back(v);

}

}

if(root->left)

dfs(root->left,s,c,v);

if(root->right)

dfs(root->right,s,c,v);

// return dfs(root->right,s,c);

}

vector<vector<int>> pathSum(TreeNode* root, int sum) {

if(!root)

return m;

vector<int> v;

dfs(root,sum,0,v);

return m;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode