简单二叉树的构建 为什么错了,显示超时

为什么错了,显示超时
输入
3个字母,分别表示3个节点的数据域(根、左、右)
输出
见样例
样例输入 Copy
ABC
样例输出 Copy
A-B-C


#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode {
    char data;
    struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;

void InitBiTree(BiTree &T);
void CreateSimpleBiTree(BiTree &T);
void show(BiTree T){
    printf("%c-%c-%c",T->data,T->lchild->data,T->rchild->data);    
}
int main(void){
    BiTree T;
    InitBiTree(T);
    CreateSimpleBiTree(T);
    show(T);
    return 0;
}

void InitBiTree(BiTree &T){
    T=NULL;
}

void CreateSimpleBiTree(BiTree &T){
    char ch;
    ch=getchar();
    if(ch=='#')return NULL;
    else
    {
        T=new BiTNode;
        T->data=ch;
        CreateSimpleBiTree(T->lchild);
        CreateSimpleBiTree(T->rchild);
    }
}