遍历二叉树 错误E0513、错误C2440

做数据结构关于遍历二叉树的实验,进行二叉树的构造录入时,无法将结构体中的指针指向地址符

#include 
#include 
#include 
using namespace std;
#define  MAX_QUEUE_SIZE   100

typedef char ElemType;

typedef  struct  queue
{
    ElemType   Queue_array[MAX_QUEUE_SIZE];
    int  front;   /* 队首  */
    int  rear;    /* 队尾  */
} Queue;

//定义二叉树结点结构体
typedef struct BTNode
{
    ElemType  data;
    struct BTNode* Lchild, * Rchild;
}BTNode;

//定义二叉树
#define n 12
typedef struct BTree
{
    BTNode Node[n];
}BTree;

void  PreOut(BTNode (*T))
{
    if (T != NULL)
    {
        cout << (*T).data;       //  访问根结点  
        if (T->Lchild != NULL)
            PreOut(T->Lchild);
        if (T->Rchild != NULL)
            PreOut(T->Rchild);
    }
}

int main(Queue Q, ElemType a, ElemType b)
{
    int i;
    BTree Tree;
    cout << "输入:\n";
    for (int i = 1; i <= n; i++) //输入并构造二叉树
    {
      cin >> Tree.Node[i].data;
      if (2*i <= n)
       ** Tree.Node[i].Lchild = Tree.Node[2*i].data;**
      else
        Tree.Node[i].Lchild = NULL;
      if (2*i + 1 <= n)
        **Tree.Node[i].Rchild = &(Tree.Node[2*i + 1].data);**
      else
        Tree.Node[i].Rchild = NULL;
    }
   BTNode* Root = &Tree.Node[1];//先序遍历并输出二叉树
   cout << "输出:\n";
   PreOut(Root);
}

运行结果及报错内容

错误(活动) E0513 不能将 "ElemType *" 类型的值分配到 "BTNode *" 类型的实体
错误 C2440 “=”: 无法从“ElemType *”转换为“BTNode *”

可不可以帮忙看看问题在哪里