#include <stdio.h>
#include <stdlib.h>
typedef int TType;
typedef struct _TreeNode
{
TType elem;
struct _TreeNode *left, *right, *parent;
}TreeNode;
void Insert_BST(TreeNode *T, TType e)
{
TreeNode *s=(TreeNode *)malloc(sizeof(TreeNode));
s->elem=e;
s->left=NULL;
s->right=NULL;
s->parent=NULL;
TreeNode *p=T, *f;
while(p!=NULL)
{
if(e<p->elem)
{
f=p;
p=p->left;
}
else
{
f=p;
p=p->right;
}
}
if(e<f->elem) f->left=s;
else
f->right=s;
}
void InOrder(TreeNode *T, TType *H, int *pi)
{
if(NULL==T)
{
return;
}
else
{
InOrder(T->left,H,pi);
H[*pi-1]=T->elem;
*pi+=1;
InOrder(T->right,H,pi);
}
}
void BSTSort(TType *H, int len)
{
int i;
TreeNode *T=(TreeNode *)malloc(sizeof(TreeNode));
T->elem=H[0];
T->left=NULL;
T->right=NULL;
T->parent=NULL;
for (i=2;i<=len;++i)
{
Insert_BST(T,H[i-1]);
}
i=1;
InOrder(T,H,&i);
}
int main()
{
TType H[]={3,2,5,7,1,3,4,6,7,0};
int i;
BSTSort(H,10);
for (i=0;i<10;++i)
{
printf("%d ",H[i]);
}
printf("
");
}