求助,二叉树做好了提交后显示 Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域
代码如下,提交到学校的acm网站就提示 :"Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区域",但自己在code blocks做可以运行通过
题目是按层输入二叉树,中序遍历输出结果;
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
#define Max 10
typedef char Element;
typedef struct TreeNode{
Element data;
int leftC;
int rightC;
}Node;
class BTree
{
public:
Node tree[Max];
int length;
public:
BTree(){length=0;}
~BTree(){};
void Create();
void print();
void InOrder(Node Tree);
};
void BTree::print(){
for(int i=0;i<length;i++){
cout<<tree[i].data<<' ';
}
}
void BTree::Create(){
Element ch[30];
cin.getline(ch,30);
int l=strlen(ch);
for(int j=0;j<l;j++){
if(ch[j]==' '){
for(int k=j;k<l;k++){
ch[k]=ch[k+1];
}
l--;
}
}
tree[l].data='-';
for(int i=0;i<l;i++){
if(ch[i]!='/0'){
tree[i].data=ch[i];
}
if(2*i+2<l){
tree[i].leftC=2*i+1;
}else{
tree[i].leftC=l;
}
if(2*i+2<l){
tree[i].rightC=2*i+2;
}else{
tree[i].rightC=l;
}
length++;
}
}
void BTree::InOrder(Node Tree){
if(Tree.data=='-'){
return;
}
InOrder(tree[Tree.leftC]);
cout<<Tree.data;
cout<<endl;
InOrder(tree[Tree.rightC]);
return ;
}
int main(){
BTree bt;
bt.Create();
bt.InOrder(bt.tree[0]);
}