初学二叉树 求助 一直显示函数未定义 可是我根本不会定义啊
#include<stdio.h>#include <stdlib.h>
#include<iostream>
#define MAXSIZE 1024
#define MAXNODE 1024
using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild; /*左右孩子指针*/
}BiTNode,*BiTree;
int Initiate (BiTree bt)
{/*初始化建立二叉树*bt的头结点*/
if((bt=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)
return 0;
bt->lchild=NULL;
bt->rchild=NULL;
return 1;
}
void PreOrder(BiTree bt)
{ /*先序遍历二叉树bt*/
if (bt==NULL) return; /*递归调用的结束条件*/
Visite(bt->data); /*访问结点的数据域*/
PreOrder(bt->lchild); /*先序递归遍历bt的左子树*/
PreOrder(bt->rchild); /*先序递归遍历bt的右子树*/
}
void InOrder(BiTree bt)
{ /*中序遍历二叉树bt*/
if (bt==NULL) return; /*递归调用的结束条件*/
Visite(bt->data); /*访问结点的数据域*/
PreOrder(bt->lchild); /*先序递归遍历bt的左子树*/
PreOrder(bt->rchild); /*先序递归遍历bt的右子树*/
}
void PostOrder(BiTree bt)
{ /*后序遍历二叉树bt*/
if (bt==NULL) return; /*递归调用的结束条件*/
PostOrder(bt->lchild); /*后序递归遍历bt的左子树*/
PostOrder(bt->rchild); /*后序递归遍历bt的右子树*/
Visite(bt->data); /*访问结点的数据域*/
}
void LevelOrder(BiTree bt,int q)
/*层次遍历二叉树bt*/
{ Queue :q=Init_Queue();
int front,rear;
if (bt==NULL) return;
In_Queue(q,bt);
BiTree x;
while(!Empty_Queue(q))
{OutQueue(q,&x);
Visite(x->data); /*访问队首结点的数据域*/
if (x->lchild!=NULL) /*将队首结点的左孩子结点入队列*/
{
In_Queue(q, x->lchild);
}
if (x->rchild!=NULL) /*将队首结点的右孩子结点入队列*/
{
In_Queue(q, x->rchild);
}
}
Destroy_Queue(&q);
}
void NRPreOrder(BiTree bt)
{/*非递归先序遍历二叉树*/
BiTree stack[MAXSIZE],p;
int top;
if(bt==NULL)return;
top=0;
p=bt;
while(!(p=NULL&&top==0))
{
while(p!=NULL)
{
/*访问节点的数据域*/
if(top<MAXNODE-1) /*将当前指针p压栈*/
{
stack[top]=p;
top++;
}
else{
printf("栈溢出");
return;
}
p=p->lchild; /*指针指向p的左孩子*/
}
if(top<=0)return; /*栈空时结束*/
else{
top--;
p=stack[top]; /*从栈中弹出栈顶元素*/
Visite(p->data);
p=p->rchild; /*指针指向p的右孩子节点*/
}
}
}
void Destroy (BiTree *bt)
{
if(*bt)
{
Destroy(&(*bt)->lchild);
Destroy(&(*bt)->rchild);
free(*bt);
}
*bt=NULL;
}
int main()
{
}