#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
using namespace std;
struct node {
string data;
int l, r;
};
vector<node> v;
string f(int x) {
if (v[x].l == -1 && v[x].r == -1) {
return "(" + v[x].data + ")";
}
if (v[x].l == -1 && v[x].r != -1) {
return "(" + v[x].data + f(v[x].r) + ")";
}
return "(" + v[x].data + f(v[x].r) + f(v[x].l) + ")";
}
int main() {
int n;
scanf("%d\n", &n);
v.resize(n + 1);
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) {
cin >> v[i].data >> v[i].l >> v[i].r;
if (v[i].l != -1)a[v[i].l] = 1;
if (v[i].r != -1)a[v[i].r] = 1;
}
for (int i = 1; i <= n; i++) {
if (a[i] == 0) {
cout << f(i);
break;
}
}
return 0;
}
prefix expression
最新推荐文章于 2024-05-30 20:15:33 发布