AcWing 1623. 简单题把我脑瓜子做裂开来,我哭了
原题链接
简单
#include<iostream>
#include<algorithm>
using namespace std;
const int N=22;
bool st[N];
int n;
struct node
{
string data;
int l,r;
}nod[N];
bool is_leaf[N];
string inorder(int root)
{
string left,right;
if(nod[root].l!=-1)
{
left=inorder(nod[root].l);
if(!is_leaf[nod[root].l]) left="("+left+")";
}
if(nod[root].r!=-1)
{
right=inorder(nod[root].r);
if(!is_leaf[nod[root].r]) right="("+right+")";
}
return left+nod[root].data+right;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
string a;
int b,c;
cin>>a>>b>>c;
nod[i]={a,b,c};
if(b) st[b]=true;
if(c) st[c]=true;
if(b==-1&&c==-1)
{
// cout<<i<<endl;
is_leaf[i]=true;
}
}
int root=1;
for(int i=1;i<=n;i++)
if(!st[i])
{
root=i;
}
cout<< inorder(root);
return 0;
}