全RE求助
查看原帖
全RE求助
390033
_caiji_楼主2021/2/19 16:02

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;
}
2021/2/19 16:02
加载中...