class Solution {
public:
/**
*
* @param root TreeNode类
* @param sum int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > pathSum(TreeNode* root, int sum) {
vector<vector<int> > v;
if(!root)
return v;
if(root->val==sum)
{
if(!root->left&&!root->right)
{
vector<int> tmp;
tmp.push_back(root->val);
v.push_back(tmp);
return v;
}
}
vector<vector<int> > t1,t2;
t1=pathSum(root->left, sum-root->val);
t2=pathSum(root->right, sum-root->val);
if(t1.size()!=0)
for(auto i : t1)
{
i.insert(i.begin(),root->val);
v.push_back(i);
}
if(t2.size()!=0)
for(auto i : t2)
{
i.insert(i.begin(),root->val);
v.push_back(i);
}
return v;
}
};使用递归解法,注意题目中没说val是正负数,所以一定要遍历到叶子节点.

京公网安备 11010502036488号