Trees On the Level

Posted corona09

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Trees On the Level相关的知识,希望对你有一定的参考价值。

Trees On the Level


竟然还有 (,) () 这种东西!!!

#include <cstdio>
#include <cstring>
#include <cctype>
const int MAXN=256+1;
char s[MAXN];
struct Node {
    int val;
    bool have;
    Node *left,*right;
    Node(int v=0,Node* l=NULL,Node* r=NULL):val(v),left(l),right(r) {
        have=false;
    }
}*root,*q[MAXN];
int front=0,rear=0;
void printAns(Node* root,int ok) {
    if(ok==0) {
        printf("not complete
");
        return;
    }
    front=rear=0;
    q[rear++]=root;
    while(front<rear) {
        Node *u=q[front++];
        if(u->have==false) {
            ok=0;
            break;
        }
        if(u->left!=NULL)q[rear++]=u->left;
        if(u->right!=NULL)q[rear++]=u->right;
    }
    if(ok==0) {
        printf("not complete
");
        return;
    }
    front=0;
    printf("%d",q[front++]->val);
    while(front<rear)printf(" %d",q[front++]->val);
    printf("
");
}
Node* newNode() {
    return new Node(0,NULL,NULL);
}
void insert(int val,char s[],int& ok) {
    Node *u=root;
    int m=strlen(s);
    for(int i=0; i<m; i++) {
        if(s[i]==‘L‘) {
            if(u->left==NULL)u->left=newNode();
            u=u->left;
        }
        if(s[i]==‘R‘) {
            if(u->right==NULL)u->right=newNode();
            u=u->right;
        }
    }
    if(u->have==true)ok=0;
    else {
        u->val=val;
        u->have=true;
    }
    return;
}
void del(Node* u) {
    if(u->left!=NULL)del(u->left);
    if(u->right!=NULL)del(u->right);
    delete u;
}
int main() {
    int ok=1,val=0;
    root=newNode();
    while(scanf("%s",s)==1) {
        if(!strcmp(s,"()")) {
            printAns(root,ok);
            ok=1;
            del(root);
            root=newNode();
            memset(s,0,sizeof(s));
            memset(q,0,sizeof(q));
        } else {
            if(!isdigit(s[1]))ok=0;
            else sscanf(s+1,"%d",&val);
            int pos=strchr(s,‘,‘)-s+1;
            insert(val,s+pos,ok);
        }
    }
    return 0;
}

2018 年 10 月 30 日,真是一个不幸的日子.

在这一天,我终于把这道题 A 掉了,反反复复提交了十多次,终于在今天,我明白了为什么错:

UVa 坑爹输出格式!!!输出文件的结尾必须有一个空行!!!

以上是关于Trees On the Level的主要内容,如果未能解决你的问题,请参考以下文章

UVA 122 Trees on the level

Uva122 Trees on the level

Trees On the Level

Uva 122 Trees on the level

二叉树hdu 1622 Trees on the level

ZOJ-1167-Trees on the Level