1919 ProblemA二叉ソートツリー


質問A:二叉ソートツリー
時間制限:1 Secメモリ制限:32 MBコミット:89解決:43
タイトルの説明
一連の整数を入力し、二叉配列数を確立し、前、中、後の遍歴を行います.
入力
入力第1行は、整数n(1<=n<=100)を含む.次の行にはn個の整数が含まれます.
しゅつりょく
複数のテストデータのグループがあり、各グループのデータに対して、問題に与えられたデータを二叉ソートツリーに作成し、二叉ソートツリーを前順、中順、後順に遍歴することができます.各ループ結果は1行出力されます.各行の最後のデータの後にスペースがあります.
サンプル入力
1
2 
2
8 15 
4
21 10 5 39 

サンプル出力
2 
2 
2 
8 15 
8 15 
15 8 
21 10 5 39 
5 10 21 39 
5 10 39 21 

経験の総括
二叉ソートツリーの基本的なツリー作成操作は、ツリーを作成してから基礎の先順、中順、後順を遍歴すればよい~~(*•̀ㅂ•́)و
正しいコード
#include 

struct node
{
	int data;
	node *lchild;
	node *rchild;
};
void insert(node * &root, int x)
{
	if(root==NULL)
	{
		node * temp=new node;
		temp->data=x;
		temp->rchild=temp->lchild=NULL;
		root=temp;
		return ;
	}
	if(x==root->data)
	{
		return;
	}
	else if(x>root->data)
	{
		insert(root->rchild,x);
	}
	else
	{
		insert(root->lchild,x);
	}
}
void pre(node *root)
{
 	if(root==NULL)
 	{
 		return ;
	}
	printf("%d ",root->data);
	pre(root->lchild);
	pre(root->rchild);
}
void in(node *root)
{
 	if(root==NULL)
 	{
 		return ;
	}
	in(root->lchild);
	printf("%d ",root->data);
	in(root->rchild);
}
void post(node *root)
{
 	if(root==NULL)
 	{
 		return ;
	}
	post(root->lchild);
	post(root->rchild);
	printf("%d ",root->data);
}
int main()
{
	int n,data;
    while(~scanf("%d",&n))
    {
    	node * root=NULL;
    	for(int i=0;i