#在做codeup代码时出现运行错误问题,哭了 谁来九九我QAQ 问题如下
这是我的代码,自己运行没有问题但是在codeup上报错
#include<cstdio>
struct node {
char data;
node* lChild, * rChild;
};
node* postMid(char pre[],char mid[],int ps,int pe,int s,int e) {
if (s>e||ps>pe)return nullptr;
//建立节点
node* newElement = new node;
newElement->data = pre[ps];
newElement->lChild = newElement->rChild = nullptr;
//插入
int k = s;
for (; k<e; k++)
if (mid[k] == pre[ps])break;
int i = k - s;//左子树节点个数
//左树
newElement->lChild = postMid(pre, mid, ps+1, ps+i,s, k-1);
//右树
newElement->rChild = postMid(pre, mid, ps+i+1, pe,k + 1,e);
return newElement;
}
void postOrder(node* root) {
if (root == nullptr)return;
postOrder(root->lChild);
postOrder(root->rChild);
//处理
printf("%c", root->data);
}
void cutTree(node* root) {
if (root == nullptr)return;
cutTree(root->lChild);
cutTree(root->rChild);
//处理
delete root;
}
int main() {
int len1=0;
int len2 = 0;
char mid[26] = { 0 };
char pre[26] = { 0 };
char get = 0;
while (scanf("%c", &get) != EOF) {
//初始化
len1 = 0;
len2 = 0;
//第一个字符串:前序
do {
pre[len1++] = get;
scanf("%c", &get);
} while (get!=' ');
//中序
scanf("%c", &get);
do
{
mid[len2++] = get;
scanf("%c", &get);
} while (get!='\n');
//建立二叉树
node* bitTree=postMid(pre, mid, 0, len1 - 1, 0, len2 - 1);
//后序遍历
postOrder(bitTree);
//销毁树
cutTree(bitTree);
printf("\n");
}
return 0;
}
大家可以复制粘贴试一试运行,为啥会一直运行错误。