1. #include<stdio.h> 
  2.  
  3. void create_btree(int *b_tree,int *nodelist,int len) 
  4.     int i=0; 
  5.     int level
  6.  
  7.     b_tree[1]=nodelist[1]; 
  8.     for(i=2;i<len;i++) 
  9.     { 
  10.         level=1; 
  11.         while(b_tree[level]!=0) 
  12.         { 
  13.             if(nodelist[i]<b_tree[level]) 
  14.                 level=level*2; 
  15.                 else 
  16.                     level=level*2+1; 
  17.         } 
  18.         b_tree[level]=nodelist[i]; 
  19.     } 
  20.  
  21.  
  22.  
  23. void main() 
  24.     int i; 
  25.     int index=1; 
  26.     int data; 
  27.     int b_tree[16]; 
  28.     int nodelist[16]; 
  29.     printf("please input the binary tree(exit for 0)"); 
  30.  
  31.  
  32.     scanf("%d",&data); 
  33.     while(data!=0) 
  34.     { 
  35.         nodelist[index]=data; 
  36.         index++; 
  37.         scanf("%d",&data); 
  38.     } 
  39.  
  40.     //清除二叉树组的内容 
  41.     for(i=0;i<16;i++) 
  42.     { 
  43.         b_tree[i]=0; 
  44.     } 
  45.  
  46.     //建立二叉树 
  47.     create_btree(b_tree,nodelist,index); 
  48.  
  49.     //输出二叉树 
  50.     printf("\n the binary tree is :\n"); 
  51.     for(i=1;i<16;i++) 
  52.     { 
  53.         printf("%2d:[%d] \n",i,b_tree[i]); 
  54.     } 
  55.  

 用这种数组来保存二叉树,会造成大量的浪费,数组的序号是按满二叉树排的