![]()
#include <iostream>
#include<cstdio>
using namespace std;
struct Nod
e{
Node* lchild;
Node* rchild;
int num;
};
struct Node Tree[50];
int loc;
Node *create(){//创建
Tree[loc].lchild = Tree[loc].rchild = NULL;
return &Tree[loc++];
}
void preOrder(Node* T){//前序遍历
printf("%d",T->num);
if(T->lchild != NULL)
preOrder(T->lchild);
if(T->rchild != NULL)
preOrder(T->rchild);
}
void inOrder(Node* T){//中序遍历
if(T->lchild != NULL)
inOrder(T->lchild);
printf("%d",T->num);
if(T->rchild != NULL)
inOrder(T->rchild);
}
void postOrder(Node* T){//后序遍历
if(T->lchild != NULL)
postOrder(T->lchild);
if(T->rchild != NULL)
postOrder(T->rchild);
printf("%d",T->num);
}
Node *insertNode(Node *T,int x){//插入数字
if(T == NULL){
T = create();
T->num = x;
}
else if(x < T->num)
T->lchild = insertNode(T->lchild,x);
else if(x > T->num)
T->rchild = insertNode(T->rchild,x);
return T;
}
int main()
{
int n;
cin >> n;
while(n--){
int n2;
cin >> n2;
Node *T = NULL;
loc = 0;
for(int i=0;i<n2;i++){
int x = 0;
cin >> x;
T = insertNode(T,x);
}
preOrder(T);
cout << endl;
inOrder(T);
cout << endl;
postOrder(T);
cout << endl;
}
return 0;
}