先序,递归。
#include <iostream>
#include <cstring>
int tree[1001][2];
char rec[1001];
using namespace std;
void read(int r) {
cout << rec[r];
for(int i = 0; i < 2; i++) {
if(tree[r][i] != 0) {
read(tree[r][i]);
}
}
}
int main() {
int n;
while(cin >> n) {
memset(tree, 0, sizeof(tree));
memset(rec, 0, sizeof(rec));
int no, l, r, node[n];
char c;
for(int i = 0; i < n; i++) {
cin >> no >> c >> l >> r;
rec[no] = c;
tree[no][0] = l;
tree[no][1] = r;
node[i] = no;
}
int root = 0;
for(int i = 0; i < n; i++) {
root = node[i];
int only = true;
for(int j = 0; j < n; j++) {
if(tree[node[j]][0] == root || tree[node[j]][1] == root){
only = false;
break;
}
}
if(only) {
break;
}
}
read(root);
cout << endl;
}
return 0;
}