给一个二叉树root和一个target值,求所有从根开始到叶节点的路径和等于target的路径。
class Solution { public: void MoveOnPath(TreeNode *node,int sum,int &val,vector<int>&item,vector<vector<int>>&ans) { if(node == NULL)return; if(node->left == NULL && node->right == NULL) { if(sum == val)ans.push_back(item); return ; } if(node->left != NULL) { val += node->left->val; item.push_back(node->left->val); MoveOnPath(node->left,sum,val,item,ans); val -= node->left->val; item.pop_back(); } if(node->right != NULL) { val += node->right->val; item.push_back(node->right->val); MoveOnPath(node->right,sum,val,item,ans); val -= node->right->val; item.pop_back();<br /> } } vector<vector<int> > pathSum(TreeNode *root, int sum) { vector<vector<int>>ans; ans.clear(); if(root == NULL)return ans; int val = 0; vector <int> item; item.clear(); val += root->val; item.push_back(root->val); MoveOnPath(root,sum,val,item,ans); return ans; } };