关于《剑指offer》某算法题的疑惑?

今天在刷《剑指offer》中“二叉树中和为某一值的路径”题目时,没有什么思路,参考了相关大神的代码和思路之后,自己写了一下,但是遇到了一个实现细节的问题。先贴代码:
class Solution {
public:
    
    vector<vector<int> > res;//存放满足条件的所有路径
    vector<int> subRes; //存放某一条合格的路径
    
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {        

      //vector<vector<int> > res;
       //vector<int> subRes; 

        if(root == NULL)
            return res;
        
        bool isLeaf = (root->left == NULL) && (root->right == NULL);//判断结点是否为叶子结点
        
        subRes.push_back(root->val);
        if((expectNumber - root->val) == 0 && isLeaf){
            res.push_back(subRes);
        }
        if(root->left)
            FindPath(root->left, expectNumber - root->val);
        if(root->right)
            FindPath(root->right, expectNumber - root->val);
        
        if(subRes.size())
            subRes.pop_back();
        
        return res;

    }
    
};
问题就处在变量的声明,业绩代码中注释的两句,开始的时候将两个变量res 和 subRes声明在函数体内,但是无法通过测试用例,也就是有错误,但是,将两个变来那个放在函数体外面的时候,就一切正常了。 请问这是怎么回事呢?  public的变量,与在函数体内的变量的区别是全局变量与局部变量的区别是吗?但是为什么要是将两个变量声明为全局变量呢?
全部评论
原因是因为  在FindPath函数里要不断的递归自己,如果你将两个数组放入函数中 你难道不知道要重新初始化吗?也就是说之前的工作都白做了。然而咱们要的却是res 不断递归的结果,所以呢要放外面 不然 你得到的结果是 最后一次递归的结果。 不知道你明白没?不明白的话可以联系我!
点赞 回复 分享
发布于 2017-08-22 19:59
函数体内?还是类内?
点赞 回复 分享
发布于 2017-08-22 19:33

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务