题目描述
点上面链接
+也能当成单目运算 真就啥都不说全靠猜。。。
#include<bits/stdc++.h>
using namespace std;
const int N = 22;
struct Node
{
string op;
int l,r;
}tree[N];
bool st[N];
string ans;
void dfs(int u) //后序遍历
{
Node t=tree[u];
if((t.op=="+"||t.op=="-")&&t.l==-1&&t.r!=-1)
{
ans=ans+"("+t.op;
dfs(t.r);
ans+=")";
}
else
{
ans+="(";
if(t.l!=-1) dfs(t.l);
if(t.r!=-1) dfs(t.r);
ans=ans+t.op+")";
}
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i ++ )
{
cin>>tree[i].op>>tree[i].l>>tree[i].r;
st[tree[i].l]=1;
st[tree[i].r]=1;
}
int k;
for(k=1;k<=n;k++)
if(!st[k]) break;
dfs(k);
cout<<ans;
return 0;
}