题目描述:
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] ]
代码:
void search_path(TreeNode * node,int sum,vector<int> temp,vector<vector<int> > &result)
{
if(node == NULL)
return;
temp.push_back(node->val);
if(node->left == NULL && node->right == NULL)
{
int current_sum = 0;
for(int i = 0;i < temp.size();i++)
current_sum = current_sum + temp[i];
if(sum == current_sum)
result.push_back(temp);
return;
}
if(node->left != NULL)
search_path(node->left,sum,temp,result);
if(node->right != NULL)
search_path(node->right,sum,temp,result);
}
vector<vector<int> > pathSum(TreeNode *root, int sum)
{
vector<vector<int> > result;
TreeNode * node = root;
vector<int> temp;
search_path(node,sum,temp,result);
return result;
}原文地址:http://blog.csdn.net/yao_wust/article/details/41512503