1919 ProblemA二叉ソートツリー
質問A:二叉ソートツリー
時間制限:1 Secメモリ制限:32 MBコミット:89解決:43
タイトルの説明
一連の整数を入力し、二叉配列数を確立し、前、中、後の遍歴を行います.
入力
入力第1行は、整数n(1<=n<=100)を含む.次の行にはn個の整数が含まれます.
しゅつりょく
複数のテストデータのグループがあり、各グループのデータに対して、問題に与えられたデータを二叉ソートツリーに作成し、二叉ソートツリーを前順、中順、後順に遍歴することができます.各ループ結果は1行出力されます.各行の最後のデータの後にスペースがあります.
サンプル入力
サンプル出力
経験の総括
二叉ソートツリーの基本的なツリー作成操作は、ツリーを作成してから基礎の先順、中順、後順を遍歴すればよい~~(*•̀ㅂ•́)و
正しいコード
時間制限: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