pta中内存超限,求解二叉树中度为1的点

pta中求二叉树度为1的节点内存超时
#include
#include

typedef char DataType;

 int i=0;
typedef struct Node
{
    DataType data;
    struct Node *LChild;
    struct Node *RChild;
}BiTNode, *BiTree;

void CreateTree(BiTree* T,char s[]);//使用先序遍历构建二叉树

int NodeCount( BiTree T);



int main(void)
{
    char s[50];
    BiTNode *root;
   
    
    while(scanf("%s",s))
    {
        i=0;
        CreateTree(&root,s);
        printf("%d\n",NodeCount(root));
    }
    return 0;
     
 } 
 
int NodeCount( BiTree T)
{
if(T==NULL) 
    return 0;
if(T->LChild!=NULL&&T->LChild!=NULL)
   {
    
    return 1+NodeCount(T->LChild)+NodeCount(T->RChild);
    }
return NodeCount(T->LChild)+NodeCount(T->RChild);
} 


//使用先序遍历构建二叉树
void CreateTree(BiTree* T, char s[])
{
    if(!s[i])
        return ;
    if(s[i] == '*')
    {
        *T = NULL;
        i++;
        return;
    }
        else
        {
            *T = (BiTree)malloc(sizeof(BiTNode));
            (*T)->data = s[i];
            i++;
            CreateTree(&((*T)->LChild),s);
            CreateTree(&((*T)->RChild),s);
        }
}

pta中提交 内存超限
我看的一段代码算法几乎一模一样,我看不出问题在哪