【问题描述】
对一组输入数据构建相应的二叉排序树,并利用其中序遍历对数据进行升序排序。(此题人工批改,必须使用二叉树进行排序,其它算法不得分)
【输入形式】
数据个数,数据。(以空格分割)
【输出形式】
排序之后的数据。(以空格分割)
【样例输入】
5 22 -15 4 89 30
【样例输出】
-15 4 22 30 89
【样例说明】
【评分标准】(此题人工批改,必须使用二叉树进行排序,其它算法不得分)
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode
{
int data;
struct BiTNode *lchild ,*rchild;
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
T=(BiTNode *)malloc(sizeof(BiTNode));
if(T==NULL) exit(-1);
T->rchild=NULL;
T->lchild=NULL;
}
void insert(BiTree &T,int a)
{
if(T==NULL)
{ CreatBiTree(T);
T->data=a;
}
else if(T->data>a)
insert(T->lchild,a);
else insert(T->rchild,a);
}
void InorderTraverse(BiTree &T)
{
if(T)
{
InorderTraverse(T->lchild);
printf("%d ",T->data);
InorderTraverse(T->rchild);
}
}
int main()
{
BiTree T=NULL;
int length,integer;
scanf("%d",&length);
for(int i=0;i<length;i++)
{ scanf("%d",&integer);
insert(T,integer);
}
InorderTraverse(T);
return 0;
}