一、问题描述
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.
For 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]
]
class Solution { public: vector<vector<int>> pathSum(TreeNode* root, int sum) { if(root==NULL)return res; s = sum; vector<int> tmp; findPath(root,tmp,0); return res; } void findPath(TreeNode* root,vector<int> tmp,int sum){ tmp.push_back(root->val); sum+=root->val; if(!root->left&&!root->right&&sum==s){ res.push_back(tmp); } else { if(root->left) findPath(root->left,tmp,sum); if(root->right) findPath(root->right,tmp,sum); } } private: vector<vector<int>> res; int s; };