(1)
void CrtBT(BiTree& T, char pre[], char ino[],
                                          int ps, int is, int n ) {
// 已知pre[ps..ps+n-1]为二叉树的先序序列,
// ino[is..is+n-1]为二叉树的中序序列,本算法由此两个序列构造二叉链表 ,ps为先序序列的开始位置,is为中序序列的开始位置,n为序列长度
   if (n==0) T=NULL;
   else {
       k=Search(ino, pre[ps]); //查询先序序列中的
              //第一个字符在中序序列中的位置
       if (k== -1)  T=NULL;
       else {                     }
   }
} // CrtBT       
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data = pre[ps];
if (k==is)  T->Lchild = NULL; //先序序列中第一个字
       符在中序序列中也是第一个字符,则表示没有左子树
else  CrtBT(T->Lchild, pre[], ino[], 
                                             ps+1, is, k-is );
if (k==is+n-1) T->Rchild = NULL; //先序序列中第一
    个字符在中序序列中是最后一个字符,则表示没有右子树
else  CrtBT(T->Rchild, pre[], ino[], 
                        ps+1+(k-is), k+1, n-(k-is)-1 );
(3)
Int CountLeaf (BiTree T) {
    if (T==NULL)  return 0;
    else if (T->lchild==NULL && 
                T->rchild==NULL)  return 1;
    else  return  CountLeaf(T->lchild) +
                        CountLeaf(T->rchild);
}