foj1512上面的题目,求大神解答,为啥运行时错误。。。。。
#include<stdio.h>struct node{ char c; node *l; node *r;};void mid_visit(node *p){ if(p->l!=NULL) mid_visit(p->l); printf("%c",p->c); if(p->r!=NULL) mid_visit(p->r);}void main(){ int n,i,m,r,k; char d; while(scanf("%d",&n)!=EOF) { node *p=new node[n+1]; for(i=1;i<=n;i++) { scanf("%d%d%d",&m,&r,&k); while(scanf("%c",&d),d==' '); p[i].c=d; if(r!=0) p[i].l=&p[r]; else p[i].l=NULL; if(k!=0) p[i].r=&p[k]; else p[i].r=NULL; } mid_visit(&p[1]); printf("\n"); delete []p; }}
#include<stdio.h>#include<string.h>struct node{ char c; node *l; node *r;};void mid_visit(node *p){ if(p->l!=NULL) mid_visit(p->l); printf("%c",p->c); if(p->r!=NULL) mid_visit(p->r);}int flag[102];//addvoid main(){ int n,i,m,r,k; char d; while(scanf("%d",&n)!=EOF) { node *p=new node[n+1]; memset(flag, 0, sizeof flag);//add for(i=1;i<=n;i++) { scanf("%d%d%d",&m,&r,&k); if(r)flag[r]=1;//add if(k)flag[k]=1;//add while(scanf("%c",&d),d==' '); p[m].c=d;//p[i].c=d; if(r!=0) p[m].l=&p[r];//if(r!=0) p[i].l=&p[r]; else p[m].l=NULL;//else p[i].l=NULL; if(k!=0) p[m].r=&p[k];//if(k!=0) p[i].r=&p[k]; else p[m].r=NULL;//else p[i].r=NULL; } for(i=1;i<=n&&flag[i];i++); mid_visit(&p[i]);//mid_visit(&p[1]); printf("\n"); delete []p; }}