2009-11-14 19:30:05來源不明

該死的計概

作法 : 遞迴模擬

大的放右邊  小的放左邊  由上而下比較找出地方放

/********************************************************/

#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;
}