rt,仿照第4篇题解写的,初步判断是 build 出了问题,不知道怎么改了
#include <cstdio>
using namespace std;
struct Tree{
char ch;
Tree *l,*r;
Tree(char w='*'):ch(w),l(0),r(0){}
~Tree(){delete l;delete r;}
};
Tree *tree;
Tree *build(char w){
if(w=='*') return 0;
return new Tree(w);
}
Tree *find(char w,Tree *now=tree){
if(now->ch==w) return now;
Tree *ans=0;
if(now->l) ans=find(w,now->l);
if(ans) return ans;
if(now->r) ans=find(w,now->r);
return ans;
}
void dfs(Tree *now){
putchar(now->ch);
if(now->l) dfs(now->l);
if(now->r) dfs(now->r);
}
int n;
char a[10];
int main(){
scanf("%d",&n);
scanf("%s",a+1);
tree->ch=a[1],tree->l=build(a[2]),tree->r=build(a[3]);
for(int i=1;i<=n-1;i++){
scanf("%s",a+1);
Tree *x=find(a[1]);
x->l=build(a[2]),x->r=build(a[3]);
}
dfs(tree);
return 0;
}