新手求高手指点
--------------------------------------------------------------------------------
我写了一点关于二叉树的代码,但是运行时总出现问题。我通过调试发现我的GreatBiTree(BiTree &T)函数似乎没有运行,但我不知道是什么问题,希望高手指点迷津。当然也欢迎各位都进来讨论一下,我在这里先谢谢各位了!!
我的完整的代码如下:(大家可以搞到自己的机器上运行一下(Vc++6.0))
#include <string.h>
#include <ctype.h>
#include <malloc.h>
#include <limits.h>
#include <stdio.h>
#include <io.h>
#include <math.h>
#include <process.h>//exit()
#include <iostream.h>//cout,cin
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;
typedef int Boolean;//Booleanshi 是布尔类型,其值是TURE和FALSE
typedef int SElemType;
#include <stdio.h>
typedef char TElemType;
#define MAX_TREE_SIZE 5
typedef struct BiTNode//定义了二叉树的结构
{
TElemType date;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int i=0;
char ch;//是用来输入时的一个变量(全局变量)
Status CreateBiTree(BiTree &T)//这段代码是按照书(《数据结构》严蔚敏 吴伟民版)上来写的
{
cin>>ch;
if(ch=='#')
{
T=NULL;
cout<<"输入结束!!"<<endl;
}
else
{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(OVERFLOW);
T->date=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
Status PrintElement(TElemType e)
{
printf("%c",e);
return OK;
}
Status PreOrderTraverse(BiTree T,Status(* visit)(TElemType e))//这是先序遍历,也是根据那本书写的
{
//PrintElement(T->date);
if(T)
{
if(PrintElement(T->date))
{
if (PreOrderTraverse(T->lchild, visit))
if (PreOrderTraverse(T->rchild, visit))
return OK;
}
return ERROR;
}
else
{
return OK;
}
}
void main ()
{
//TElemType e;
BiTree T;
CreateBiTree(T);//在这里构建一个树,但是在输入每个节点值的时候总出现问题
PreOrderTraverse(T,PrintElement);
}