1130. Infix Expression (25)

来源:互联网 发布:云头条 | 云计算云媒体 编辑:程序博客网 时间:2024/05/16 14:41
#include<cstdio>#include<iostream>#include<string>#include<algorithm>using namespace std;const int maxn=30;struct Node{    string data;    int left,right;};Node tree[maxn];bool isRoot[maxn];int tRoot;string ans;void inOrder(int root){    if(tree[root].left!=-1){        if(root!=tRoot) ans.append("(");        inOrder(tree[root].left);    }    if(tree[root].data=="-"&&tree[root].left==-1&&root!=tRoot){    //如果没有root!=tRoot,测试点三错误,对应以下case     //2    //- -1 2    //3 -1 -1         ans.append("(");    }    ans.append(tree[root].data);    if(tree[root].right!=-1){        inOrder(tree[root].right);        if(root!=tRoot) ans.append(")");    }}int main(){    int n;    scanf("%d",&n);    fill(isRoot,isRoot+maxn,true);    for(int i=1;i<=n;i++){        string data;        int l,r;        cin>>data>>l>>r;        tree[i].data=data;        tree[i].left=l;        tree[i].right=r;        isRoot[l]=isRoot[r]=false;    }    for(int i=1;i<=n;i++){        if(isRoot[i]==true){            tRoot=i;            break;        }    }//  printf("root:%d\n",tRoot);    inOrder(tRoot);    cout<<ans<<endl;    return 0; } 
原创粉丝点击