问题是给定预先排序和顺序遍历树,构造二叉树。但是我收到此错误:
运行时错误。由于运行时错误,您的提交已停止。例如: 除零,数组索引越界,未捕获异常你 可以尝试使用自定义输入测试您的代码并尝试调试 代码中的语句。分段错误
以下代码
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) ;
}