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是正负数,所以一定要遍历到叶子节点.