C++ 基于二叉树静态变量的故障分割

C++ 基于二叉树静态变量的故障分割,c++,recursion,static,binary-tree,C++,Recursion,Static,Binary Tree,Ques是给定树的前序和中序遍历,构造二叉树。但我得到以下错误: 运行时错误。由于运行时错误,您的提交已停止。前任: 除零,数组索引超出范围,未捕获异常 可以尝试使用自定义输入测试代码,并尝试将调试 代码中的语句。分段故障 对于以下代码 int binary(int x , vector<int> &inorder , int lo , int hi){ for(int i = lo ; i <= hi ; i++){ if(inorder[i]

Ques是给定树的前序和中序遍历,构造二叉树。但我得到以下错误:

运行时错误。由于运行时错误,您的提交已停止。前任: 除零,数组索引超出范围,未捕获异常 可以尝试使用自定义输入测试代码,并尝试将调试 代码中的语句。分段故障

对于以下代码

int binary(int x , vector<int> &inorder , int lo , int hi){
    for(int i = lo ; i <= hi ; i++){
        if(inorder[i] == x){
            return i ;
        }
    }
    return -1 ;
}

TreeNode* rec(vector<int> &preorder, vector<int> &inorder, int a , int b){
    if(a > b)
        return NULL ;
    static int indx;
    int in = binary(preorder[indx], inorder, a , b) ;
    TreeNode *treenode = new TreeNode(preorder[indx]) ;
    (indx)++ ;
    treenode->left = rec(preorder, inorder, a, in-1) ;
    treenode->right = rec(preorder, inorder, in+1, b) ;
    return treenode ;
}

TreeNode* Solution::buildTree(vector<int> &preorder, vector<int> &inorder) {
    int sz = preorder.size() ;
    int index=0;
    return rec(preorder, inorder, 0, sz-1) ;
}
int二进制(int x、向量和顺序、int lo、int hi){
对于(int i=lo;i b)
返回NULL;
静态int-indx;
int in=二进制(前序[indx],顺序a,b);
TreeNode*TreeNode=新的TreeNode(预订单[indx]);
(indx)++;
treenode->left=rec(预订单、顺序、a、in-1);
treenode->right=rec(前序、顺序、in+1、b);
返回树节点;
}
TreeNode*解决方案::构建树(向量和前序,向量和索引){
int sz=preorder.size();
int指数=0;
返回rec(预订单、顺序、0、sz-1);
}

没有任何理由使用静态变量来实现二叉树。当我传递索引地址并对索引进行递增时,答案是正确的。但是在这段代码中使用静态变量有什么不对?如果使用静态变量,您只能有一个树实例。您能在每次调用中借助图表或地址详细说明吗??我会帮上大忙的。谢谢