为什么总是通不过编译???,我用的是trouble c

/*顺序结构的二叉树,打印出编号为n的节点的双亲和所有孩子*/
#define  M   20
#include "stdio.h"
int treeq[M];/*存二叉树的数组*/ 
out(int a)
{ if(2a<=M) /*如果左孩子存在,就输出左孩子*/  
            printf("%d\n",treeq[2a]);
  else 
            return(0);
  if(2a+1<=M)/*如果右孩子存在,就输出右孩子*/ 
            printf("%d\n",treeq[2a+1]);
  else 
            return(0); 
  out(2a);/*输出左孩子以下的各个节点*/
  out(2a+1);/*输出右孩子以下的各个节点*/
    }        
outree(int n)
{   int a;
    a=n/2;  /*得到头节点地址*/
    printf("%d\n",treeq[a]); /*输出头节点*/ 
    out(n); /*输出头节点以后的节点*/
    }

main()
{
      treeq[1]=1; /*构造一颗二叉树*/
      treeq[2]=2;
      treeq[3]=3;
      treeq[4]=4;
      treeq[5]=5;
      treeq[6]=6;
      treeq[7]=7;
      outree(2);
 }