#include<bits/stdc++.h>
using namespace std;
struct node{
string data;
int L, R;
}ans[100];
string dfs(int root){
if(ans[root].L == -1 && ans[root].R == -1) return ans[root].data;
if(ans[root].L != -1 && ans[root].R != -1) return "(" + dfs(ans[root].L)+ ans[root].data + dfs(ans[root].R) + ")";
if(ans[root].L == -1 && ans[root].R != -1) return "(" + ans[root].data + dfs(ans[root].R)+ ")";
}
int main(){
int have[100] = {0}, n, root = 1;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
cin >> ans[i].data >> ans[i].L >> ans[i].R;
if(ans[i].L != -1) have[ans[i].L] = 1;
if(ans[i].R != -1) have[ans[i].R] = 1;
}
while(have[root] == 1) root++;
string ans = dfs(root);
if(ans[0] == ‘(‘) ans = ans.substr(1, ans.size() - 2);
cout <<ans;
return 0;
}
原文:https://www.cnblogs.com/tsruixi/p/13081018.html