二叉树中使用静态变量的分段故障

时间:2017-04-29 17:43:51

标签: c++ recursion static binary-tree

问题是给定预先排序和顺序遍历树,构造二叉树。但是我收到此错误:

  

运行时错误。由于运行时错误,您的提交已停止。例如:   除零,数组索引越界,未捕获异常你   可以尝试使用自定义输入测试您的代码并尝试调试   代码中的语句。分段错误

以下代码

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) ;
}

0 个答案:

没有答案