文章
8
粉丝
14
获赞
7
访问
639
为何这么写,测试用例可以在本地ide正确运行,但是在平台上现实runtime,没有检查出问题,求解答
#include<bits/stdc++.h>
using namespace std;
struct btnode{
char data;
btnode* lchild;
btnode* rchild;
};
string s;
int len;
btnode* create(){
char c;
c = s[len++];
if(c == '#') return nullptr;
btnode *head = new btnode;
head->data = c;
btnode *l = create();
btnode *r = create();
head->lchild = l;
head->rchild = r;
return head;
}
void inordertraverse(btnode *T){
if(T != nullptr){
inordertraverse(T->lchild);
cout<<T->data<<" ";
inordertraverse(T->rchild);
}
}
int main(){
while(cin>>s){
len = 0;
btnode *head = create();
inordertraverse(head);
cout<<endl;
}
return 0;
}
登录后发布评论
if(c == '#') return nullptr;
改为
if(c == '#' || len > s.length()) return nullptr;
防止越界