建立二叉树,并对树进行操作(数据结构),该如何解决

建立二叉树,并对树进行操作(数据结构)
题目:
建立二叉树,并对树进行操作
基本功能要求:
a)         利用完全二叉树的性质建立一棵二叉树。
b)         统计数叶子结点的个数。
c)         求二叉树的深度。
#include "stdlib.h "         /*   存储分配头文件,或用 "malloc.h "   */
#include "stdio.h "           /*   标准I/O头文件   */
#include "ctype.h "    
#define   N   10000                                           /*   定义NULL,本行可省去   */
#define   LENG   sizeof(struct   Bnode)     /*   确定结点所占空间的字节数   */
typedef   char   ElemType;                         /*   抽象元素类型为char类型   */


typedef   struct   Bnode                             /*   Bnode为结点(C结构体)类型   */
{   ElemType   data;                                   /*   data为抽象元素类型   */
      struct   Bnode   *lchild,   *rchild;   /*   为指针类型     */
      signed   size;  
}Bnode;
int   node[4]   ;
int   creat_tree(Bnode**root   )       /*   root是指向指针的指针类型   */
{   /*   本算法递归生成二叉树   */
            ElemType   ch;
            scanf( "%c ",&ch);                                                                               /*   输入结点,字符型   */
            if   (ch== '   '){   (*root)-> data=NULL;
                                                        return;}                                               /*   生成空二叉树   */
            else                                                                                                                             /*   生成非空二叉树   */
              {   (*root)=(Bnode*)malloc(LENG);               /*   申请结点空间   */
          (*root)-> data=ch;                                               /*   生成根结点   */
          creat_tree(&(*root)-> lchild);   /*   递归生成左子树   */
          creat_tree(&(*root)-> rchild);         /*   递归生成右子树   */