c++二叉树的创建和遍历等(数据结构)

编译没问题,但是输入一个二叉树无法遍历(可能输入也没输入进去)
求指点哪里有问题?

#include<iostream>
using namespace std;
struct BiNode{
    char data;
    BiNode *left;
    BiNode *right;
};
typedef BiNode* BiTree;
void CreateTree(BiTree &T) {
    char ch;
    cin >> ch;        // 读取用户输入的字符
    if (ch == '#') T = nullptr; // 建立空树
    else {
        // 生成新的根节点
        T = new BiNode;
        T->data = ch;
        // 递归地创建左子树和右子树
        CreateTree(T->left);
        CreateTree(T->right);
    }
}
void InOrderTraverse(BiTree T) {
    if (T == nullptr) {
        cout<<"#";
        return;
    }
    else {
        // 递归地访问左子树和右子树
        InOrderTraverse(T->left);
        cout << T->data;       //  中序       
        InOrderTraverse(T->right);
    }
}
int main()
{
  BiTree t1;
      CreateTree(t1);
    InOrderTraverse(t1);
}