二叉树的创建和遍历,请问为什么遍历无法输出啊



```c++
#include
using namespace std;
struct bitree{
    int data;
    struct bitree* leftchild;
    struct bitree* rightchild;
};
void creat(bitree *T)
{
    int data;
    cin>>data; 
    if(data==-1)
    return ;
    T=new bitree;
    T->data=data;
    cout<<"请输入"<"的左子树:";
    creat(T->leftchild);
    cout<<"请输入"<"的右子树:";
    creat(T->rightchild);
    
}
void xianxu(bitree* t)
{
    if(t==NULL)
    return;
    cout<data<<" ";
    xianxu(t->leftchild);
    xianxu(t->rightchild);
}
void zhongxu(bitree* t)
{
    if(t==NULL)
    return;
    zhongxu(t->leftchild );
    cout<data<<" ";
    zhongxu(t->rightchild );
}
void houxu(bitree* t)
{
    if(t==NULL)
    return;
    houxu(t->leftchild);
    houxu(t->rightchild );
    cout<data<<" ";
 } 
int main()
{
    bitree *t;
    creat(t);
    xianxu(t);
    zhongxu(t);
    houxu(t);
    return 0;
 } 

```