我的解题:
先判断该路径是否可行,不可行就return
可行就push进vector中,进一步判断是否是符合条件
顺着进入下一个节点
切回之前(pop——back())
class Solution {
public:
vector<vector<int>> pathSum(TreeNode* root, int sum) {
vector<vector<int>> res;
vector<int> line;
func(res,line,root,sum);
return res;
}
void func(vector<vector<int>> &res,vector<int> &line,TreeNode* node,int num){
if(!node) return;
line.push_back(node->val);
if(num==node->val&&!node->left&&!node->right){
res.push_back(line);
}
func(res,line,node->left,num-node->val);
func(res,line,node->right,num-node->val);
line.pop_back();
}
};