标签:
Description:
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] ]
Code:
1 void pathSum(TreeNode* root, int sum, vector<int>&path,vector< vector<int> >&result) 2 { 3 path.push_back(root->val); 4 if (root->left == NULL && root->right == NULL) 5 {//如果当前访问结点为叶子结点 6 if (root->val == sum) 7 {//找到一条路径 8 vector<int>v; 9 vector<int>::iterator it = path.begin(); 10 for (; it != path.end(); ++it ) 11 { 12 v.push_back((*it)); 13 } 14 result.push_back(v); 15 } 16 } 17 if (root->left!=NULL) 18 pathSum(root->left, sum-root->val, path,result); 19 if (root->right!=NULL) 20 pathSum(root->right, sum-root->val, path,result); 21 path.pop_back(); 22 23 } 24 vector<vector<int>> pathSum(TreeNode* root, int sum) { 25 vector< vector<int> >result; 26 if (root==NULL) 27 return result; 28 29 vector<int>path; 30 pathSum(root,sum,path,result); 31 return result; 32 }
标签:
原文地址:http://www.cnblogs.com/happygirl-zjj/p/4620993.html