1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public:
vector<int> vi; vector<vector<int>> vvi;
void DFS(TreeNode* root, int sum) { if (root == NULL) return; if (root->left == NULL && root->right == NULL) { if (sum == root->val) { vi.push_back(root->val); vvi.push_back(vi); vi.pop_back(); } return; } vi.push_back(root->val); sum -= root->val; DFS(root->left,sum); DFS(root->right,sum); vi.pop_back(); }
vector<vector<int>> pathSum(TreeNode* root, int sum) { DFS(root,sum); return vvi; } };
|