Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
Note: A leaf is a node with no children.
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] ]
c++
class Solution { public: vector<vector<int> > result; vector<vector<int> > pathSum(TreeNode* root, int sum) { if(root==NULL) return result; vector<int> a; dfs(root,sum,a); return result; } void dfs(TreeNode* root,int sum,vector<int>a) { a.push_back(root->val); if(root->left==NULL&&root->right==NULL) { if(sum==root->val) result.push_back(a); } if(root->left!=NULL) dfs(root->left,sum-root->val,a); if(root->right!=NULL) dfs(root->right,sum-root->val,a); } };