题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3999
#include<stdio.h>
#include<string.h>
struct ha
{
int left,right,num;
}b[100005];
int ii;
void insert(int x,int root);
void dfs(int root);
int main()
{
int n;
while(scanf("%d",&n)==1)
{
int i;
int a[100005];
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
memset(b,0,sizeof(b));
b[1].num=a[1];
ii=2;
for(i=2;i<=n;i++)
{
insert(a[i],1);
}
printf("%d",a[1]);
dfs(1);
printf("\n");
}
return 0;
}
void insert(int x,int root)
{
while(1)
{
if(b[root].num==0){
b[root].num=x;
break;
}
if(b[root].num>x)
{
if(b[root].left==0)
b[root].left=ii++;
root=b[root].left;
}
else{
if(b[root].right==0)
b[root].right=ii++;
root=b[root].right;
}
}
}
void dfs(int root)
{
if(b[root].left!=0){
printf(" %d",b[b[root].left].num);
dfs(b[root].left);
}
if(b[root].right!=0)
{
printf(" %d",b[b[root].right].num);
dfs(b[root].right);
}
}
#include<stdio.h>
#include<string.h>
struct ha
{
}b[100005];
int ii;
void insert(int x,int root);
void dfs(int root);
int main()
{
}
void insert(int x,int root)
{
}
void dfs(int root)
{
}