请问一下,这个程序出现的这些错误要怎么改啊

#include <iostream>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSIZE 100
#define STACKINCREMENT 10
#define MAXQSIZE 100//队列
using namespace std;

typedef struct BiNode
{//定义二叉树结构
    char data;
    struct BiNode *lchild,*rchild;
}*BiTree,BiTNode;

void CreateBiTree(BiTree &T)
{//先序创建二叉树
    char ch;
    cin>>ch;
    if(ch=='#') T=NULL;
    else{
        T=new BiTNode;
        T->data=ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
}
void PreOrderTraverse(BiTree T)
{//先序遍历
    if(T)
    {
        cout<<T->data;
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}
void  InOrderTraverse( BiTree T ) {

    if(T)
   {
   	InOrderTraverse(T->lchild);
	    cout <<T->data;
   	InOrderTraverse(T->rchild);
   }


} // InOrderTraverse

void PostOrderTraverse(BiTree T)
{//后序遍历
    if(T)
    {
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        cout<<T->data;
    }
}

void Insert(BiTree &T,int e)//二叉排序树的插入操作 
{
if(!T)//找到插入位置,递归结束 
{
BiTree S;
S=new BiTNode;//生成新节点 
S->data=e;
S->lchild=S->rchild=NULL;
T=S;//把新节点*S链接到已找到的插入位置 
}
else if(e<T->data) Insert(T->lchild,e);
else if(e>T->data) Insert(T->rchild,e);
}

typedef int SElemType; // 定义栈元素类型
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等

typedef struct{//顺序栈的存储结构
    SElemType *base;//栈底指针
    SElemType *top;//栈顶指针
    int stacksize;//栈可用的最大容量
}SqStack;//栈结构

Status InitStack(SqStack &S)
{//构造一个空栈S
    S.base=new SElemType[MAXSIZE];//分配一个最大容量为MAXSIZE的数组空间
    if(!S.base) return ERROR;//存储分配失败
    S.top=S.base;//top初始值为base,空栈
    S.stacksize=MAXSIZE;//stacksize置为栈的最大容量MAXSIZE
    return OK;
}//构建空栈S

Status StackEmpty(SqStack S)
{
    if(S.top=S.base) return OK;
    else return ERROR;
}//判断栈是否为空
Status GetTop(SqStack S,SElemType &e)
{
    if(S.top==S.base) return ERROR;
    e=*(S.top-1);
    return OK;
}
Status Push(SqStack &S,SElemType e)
{
    if(S.top-S.base>=S.stacksize){
       S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
       if(!S.base) return ERROR;
       S.top=S.base+S.stacksize;
       S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
    return OK;
}//插入
Status Pop(SqStack &S,SElemType &e)
{
    if(S.base==S.top) return ERROR;
    e=*--S.top;
    return OK;
}//删除


void MiDTraverse(BiTree T) {  //中序遍历二叉树,非递归实现
	SqStack S;
	InitStack(S);
	BiTree p,q;
	p=T;
	q=new BiTNode;
	while(p||!StackEmpty(S)){
		if(p){
			Push(S,p);
			p=p->lchild;
		}
		else {
			Pop(S,q);
           cout<<q->data;
			p=q->rchild;
}}}
BiTree Search(BiTree T,int e)//二叉排序树的元素查找 
{
if(!T||T->data==e) return T;
else if(e<T->data) return Search(T->lchild,e);
else if(e>T->data) return Search(T->rchild,e);
}
typedef BiTree QElemType;
typedef struct{
   QElemType *base;
   int front;
   int rear;
}SqQueue;//队列
Status InitQueue(SqQueue &Q)
{
    Q.base = (QElemType *)malloc (MAXQSIZE * sizeof(QElemType));
    if(!Q.base) return ERROR;
    Q.front=Q.rear=0;
    return OK;
}//构造一个空队列Q
Status EnQueue(SqQueue &Q,QElemType e)
{
// 插入元素e为Q的新的队尾元素
// 请补全代码
	if((Q.rear + 1)% MAXQSIZE == Q.front)return ERROR;
	Q.base[Q.rear] = e ;
	Q.rear = (Q.rear + 1) % MAXQSIZE;
	return OK;
}

Status DeQueue(SqQueue &Q, QElemType &e)
{
// 若队列不空, 则删除Q的队头元素, 用e返回其值, 并返回OK; 否则返回ERROR
// 请补全代码
	if(Q.front == Q.rear) return ERROR;
	e = Q.base[Q.front];
	Q.front = (Q.front +1) % MAXQSIZE;
	return OK;
}
Status FTraverse(BiTree T)
{
    BiTree A,L,R;
	SqQueue S;
	InitQueue(S);
	A=T;
	EnQueue(S,T);
	while(S.front!=S.rear)
	{
		DeQueue(S,A);
		printf("%d ",A->data);
		L=A->lchild;
		R=A->rchild;
		if(L) EnQueue(S,L);
		if(R) EnQueue(S,R);
	}
	return OK;
}

int main()   //主函数
{
int n;
cin>>n;
BiTree T;
int x,y,z;
CreateBiTree(T,n);
PreOrderTraverse(T);cout<<endl;
InOrderTraverse(T);cout<<endl;
PostOrderTraverse(T);cout<<endl;
cin>>x>>y>>z;
if(Search(T,x)) cout<<"1"<<endl;
else cout<<"0"<<endl;
if(Search(T,y)) cout<<"1"<<endl;
else cout<<"0"<<endl;
Insert(T,z);
PreOrderTraverse(T);cout<<endl;
InOrderTraverse(T);cout<<endl;
PostOrderTraverse(T);cout<<endl;
MiDTraverse(T);cout<<endl;
FTraverse(T);cout<<endl;
return 0;
 }//main

报错信息呢?

 

这两处实参与形参不对应,仔细看看函数原型的形参类型;

这里也一样是参数问题,原型只有一个形参,这里调用直接传了2个。