該死的計概
作法 : 遞迴模擬
大的放右邊 小的放左邊 由上而下比較找出地方放
/********************************************************/
#include<stdio.h>
#include<stdlib.h>
int NUM[1001];
int link[1001][2]={0},top;
void Tree(int now,int value)
{
if(value>NUM[now])
{
if(link[now][1]==0)
link[now][1]=++top,NUM[top]=value;
else
Tree(link[now][1],value);
}
else
{
if(link[now][0]==0)
link[now][0]=++top,NUM[top]=value;
else
Tree(link[now][0],value);
}
}
void print(int now)
{
printf("%d ",NUM[now]);
if(link[now][0]!=0) print(link[now][0]);
if(link[now][1]!=0) print(link[now][1]);
}
main()
{
int N,M;
while(scanf("%d",&N)==1&&N)
{
int a,b,c;
for(a=0;a<=N;a++) link[a][0]=0,link[a][1]=0;
scanf("%d",&M);
NUM[1]=M,top=1;
for(a=1;a<N;a++)
{
scanf("%d",&M);
Tree(1,M);
}
print(1);
puts("");
}
return 0;
}
下一篇:加法運算