来源:
2012年北京邮电大学计算机研究生机试真题
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int left,right,parent,m;
}node;
int main()
{
node a[100];
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j,x;
for(i=0;i<n;i++)
{
a[i].left=-1;
a[i].right=-1;
a[i].parent=-1;
a[i].m=-1;
}
for(i=0;i<n;i++)
{
scanf("%d",&a[i].m);
if(i==0) printf("-1\n");
else
{
j=0;
if(a[i].m>a[j].m)
x=a[j].right;
else
x=a[j].left;
while(x!=-1)
{
j=x;
if(a[i].m>a[j].m)
x=a[j].right;
else
x=a[j].left;
}
a[i].parent=j;
if(a[i].m>a[j].m)
a[j].right=i;
else
a[j].left=i;
printf("%d\n",a[a[i].parent].m);
}
}
}
return 0;
}