题目描述:
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