AcWing 4274. 后缀表达式
原题链接
简单
作者:
YAX_AC
,
2024-12-10 15:43:41
,
所有人可见
,
阅读 5
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 25;
int n;
int l[N],r[N];
string v[N];
int father[N];
//因为是算法树,不会出现左孩子非空右孩子为空的情况
void dfs(int u)
{
cout<<'(';
if(l[u]!=-1 && r[u]!=-1)
{
dfs(l[u]);
dfs(r[u]);
cout<<v[u];
}
else if(l[u] == -1 && r[u] == -1)
{
cout<<v[u];
}
else//负号
{
cout<<v[u];
dfs(r[u]);
}
cout<<')';
}
int main()
{
cin>>n;
memset(l,-1,sizeof l);
memset(r,-1,sizeof r);
for(int i = 1; i<=n; i++)
{
cin>>v[i]>>l[i]>>r[i];
father[l[i]] = 1;
father[r[i]] = 1;
}
int root = 1;
while(father[root]) root++;
dfs(root);
return 0;
}