#include <stdio.h>
#include <string.h>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
struct node
{
string data;
int lchild;
int rchild;
bool isdata;
}A[30];
bool vis[30];
int N;
string Merge(int root)
{
if(root==-1)return "";
else
{
if(A[root].isdata)
{
return Merge(A[root].lchild)+A[root].data+Merge(A[root].rchild);
}
else
{
return "("+Merge(A[root].lchild)+A[root].data+Merge(A[root].rchild)+")";
}
}
}
int main()
{
scanf("%d",&N);
string data;
for(int i=1;i<=N;i++)
{
cin>>data;
int l,r;
cin>>l>>r;
if(l==-1&&r==-1)
{
A[i].isdata=true;
}
else
{
A[i].isdata=false;
}
A[i].data=data;
A[i].lchild=l;
A[i].rchild=r;
if(l!=-1)
{
vis[l]=true;
}
if(r!=-1)
{
vis[r]=true;
}
}
int root;
for(int i=1;i<=N;i++)
{
if(vis[i]==false)
{
root=i;
break;
}
}
string result=Merge(root);
if(result.length()>=3)
{
result.erase(result.begin());
result.erase(result.end()-1);
}
cout<<result<<endl;
return 0;
}
PAT甲1130 Infix Expression(25 分)
最新推荐文章于 2021-09-05 10:28:59 发布