这个题应该说没有什么难度。不过却因此发现果然还是微软的编译器比较符合我的习惯,gcc神马的真心用不惯。
#include <stdio.h>
typedef struct Tree Tree;
struct Tree{
Tree * parent;
Tree * left;
Tree * right;
int value;
}tree1[100];
int createT(Tree *t,Tree *src)
{
if(src->value<t->value)
{
if(t->left==NULL)
{
t->left=src;
src->parent=t;
return 1;
}else
{
createT(t->left,src);
}
}else
{
if(t->right==NULL)
{
t->right=src;
src->parent=t;
return 1;
}else
{
createT(t->right,src);
}
}
return 0;
}
int main()
{
int n=0;
while (~scanf("%d",&n))
{
for(int i=0;i<n;i++)
{
scanf("%d",&tree1[i].value);
tree1[i].left=NULL;
tree1[i].right=NULL;
if(i==0)
{
tree1[i].parent=NULL;
}else
{
createT(&tree1[0],&tree1[i]);
}
}
for(int i=0;i<n;i++)
{
if(i==0)
{
printf("-1\n");
}else
{
printf("%d\n",(tree1[i].parent)->value);
}
}
}
return 0;
}