C++ 基于二叉树静态变量的故障分割
Ques是给定树的前序和中序遍历,构造二叉树。但我得到以下错误: 运行时错误。由于运行时错误,您的提交已停止。前任: 除零,数组索引超出范围,未捕获异常 可以尝试使用自定义输入测试代码,并尝试将调试 代码中的语句。分段故障 对于以下代码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]
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);
}
没有任何理由使用静态变量来实现二叉树。当我传递索引地址并对索引进行递增时,答案是正确的。但是在这段代码中使用静态变量有什么不对?如果使用静态变量,您只能有一个树实例。您能在每次调用中借助图表或地址详细说明吗??我会帮上大忙的。谢谢