1 class Solution
2 {
3 public:
4 vector<vector<int>> res;
5 int SUM;
6 void dfs(TreeNode* node,int tt,vector<int> tmp)
7 {
8 vector<int> tmp1 = tmp,tmp2 = tmp;
9 cout << tmp.size() << endl;
10 if(node->left)
11 {
12 tmp1.push_back(node->left->val);
13 dfs(node->left,tt+node->left->val,tmp1);
14 }
15 if(node->right)
16 {
17 tmp2.push_back(node->right->val);
18 dfs(node->right,tt+node->right->val,tmp2);
19 }
20 if(!node->left && !node->right && tt==SUM)
21 {
22 res.push_back(tmp);
23 }
24 }
25 vector<vector<int>> pathSum(TreeNode* root, int sum)
26 {
27 if(!root)
28 return res;
29 vector<int> tmp;
30 tmp.push_back(root->val);
31 SUM = sum;
32 int tt = root->val;
33 dfs(root,tt,tmp);
34 return res;
35 }
36 };