技巧:链表二叉树的掌握,以及链表递归深层次的了解
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int > > ans;
vector<int> tmp;
int anw[10010],cnt=0;
void DFS(TreeNode *root,int sum,int now){
if(root->left==NULL && root->right==NULL){
if(now==sum){
ans.push_back(tmp);
}
return ;
}
if(root->left){
tmp.push_back(root->left->val);
DFS(root->left,sum,now+root->left->val);
tmp.pop_back();
}
if(root->right) {
tmp.push_back(root->right->val);
DFS(root->right,sum,now+root->right->val);
tmp.pop_back();
}
}
vector<vector<int>> pathSum(TreeNode* root, int sum) {
if(root==NULL) return ans;
tmp.clear();
tmp.push_back(root->val);
DFS(root,sum,root->val);
return ans;
}
};