【发布时间】:2021-05-23 19:08:53
【问题描述】:
我正在做一个 leetcode 问题,我使用的是 static index,每次函数调用自身时我都会迭代它。当我在 VSCode 上运行它时,它给了我想要的输出,但是当我将它提交给 leetcode 时,它显示我超出了范围值。我做了一些试验和错误,我发现如果我在函数中声明 index 为通过引用传递,则接受该解决方案。这让我开始思考代码的这种变化会在内部产生什么影响。下面是我的函数代码。
TreeNode* helper(vector<int>& preorder, vector<int>& inorder,int start,int end,int &index){
if(start>end) return NULL;
// static int index = 0; //It was declared here prior to moving it above in function
int curr = preorder.at(index);
TreeNode *node = new TreeNode(curr);
index++;
if(start==end) return node;
int pos = search(inorder,curr,start,end);
node->left = helper(preorder,inorder,start,pos-1,index);
node->right = helper(preorder,inorder,pos+1,end,index);
return node;
}
(代码是关于从 preOrder 和 inOrder 构造二叉树以防万一有人想知道)。
【问题讨论】:
标签: c++ pass-by-reference