標籤:
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 }
Path Sum II