Given a binary tree and a sum, find all root-to-leaf paths where each path‘s sum equals the given sum.
For example:sum
= 22
,
5 / 4 8 / / 11 13 4 / \ / 7 2 5 1
return
[ [5,4,11,2], [5,8,4,5] ]
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int> > pathSum(TreeNode *root, int sum) { vector<vector<int>> res; vector<int> temp; if(root == NULL) return res; pathSum(root,sum,0,temp,res); return res; } void pathSum(TreeNode *root, int sum, int now, vector<int>& temp, vector<vector<int>>& res) { if(root == NULL) return; if(root->left ==NULL && root->right == NULL) { if(sum == now+root->val) { temp.push_back(root->val); res.push_back(temp); temp.pop_back(); } return; } temp.push_back(root->val); if(root->left != NULL) pathSum(root->left,sum,now+root->val,temp,res); if(root->right!=NULL) pathSum(root->right,sum,now+root->val,temp,res); temp.pop_back(); return ; } };
原文:http://blog.csdn.net/shaya118/article/details/42711183