希望是我想复杂了_(:з」∠)_似乎他好像没告诉我根的位置 我就找了一下根
算了没时间细看了AC就行啦
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
using namespace std;
typedef struct
{
string key;
int lchild, rchild;
}node;
vector<node> Tree(21);
int cnt;
void PreOrder( int T )
{
if( T != -1 )
{
++cnt;
PreOrder( Tree[T].lchild );
PreOrder( Tree[T].rchild );
}
}
void InOrder( int T, int Root )
{
if( T != -1 )
{
if( Tree[T].lchild != -1 || Tree[T].rchild != -1 )
printf("%s", T != Root ? "(":"");
InOrder( Tree[T].lchild, Root );
cout << Tree[T].key;
InOrder( Tree[T].rchild, Root );
if( Tree[T].lchild != -1 || Tree[T].rchild != -1 )
printf("%s", T != Root ? ")":"");
}
}
int main()
{
int N, Root;
cin >> N;
for( int i = 1; i <= N; ++i )
cin >> Tree[i].key >> Tree[i].lchild >> Tree[i].rchild;
for( int i = 1; i <= N && cnt < N; ++i, cnt = 0 )
{
PreOrder(i);
if( cnt == N )
Root = i;
}
InOrder( Root, Root );
}