谁能帮我看看我的这个数据结构的题哪里错了啊??我要的是先序遍历输出2叉树.哪位高人帮的改正下哦

来源:百度知道 编辑:UC知道 时间:2024/05/02 04:31:53
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define OK 1;
typedef struct BiTNode {
char data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
int CreateBiTree(BiTree &T)
{ //按中序次序输入二叉树中结点的值(字符),空格表示空树,
char ch;
scanf(&ch);
if(ch==' ') T=NULL;
else {
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(0);
CreateBiTree(T->lchild);
T->data=ch;
CreateBiTree(T->rchild);
}
return OK;
}
int visit(char e){
printf("%c",e);
return OK;
}
int PreOrderTraverse(BiTree T,int(*visit)(char e)){

if(T)
{if(visit(T->data))
if(PreOrderTraverse(T->lchild,visit))
if(PreOrderTraverse(T->lchild,visit))
return OK;
return -1;
}else return OK;
}
void main()
{
BiTree T;
CreateBiTree(T);
PreOrderTraverse(T,vi

仅供参考

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -2
#define S_INIT_SIZE 100 //存储空间初时分配量
#define SINCREMENT 10 //存储空间分配增量
typedef int Status;
typedef struct BTNode
{ //二叉树的二叉链表存储表示
char data;
struct BTNode *lchild,*rchild; //左右孩子指针
}BTNode,*BT;
typedef struct
{ BT *base;
BT *top; //栈顶指针
int stacksize; //当前已经分配的存储空间,以元素为单位
}SqS;
Status InitS(SqS &S)
{ //构造一个空栈
S.base=(BT *)malloc(S_INIT_SIZE*sizeof(BT));
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base;
S.stacksize=S_INIT_SIZE;
return OK;
}//InitS
Status Gettop(SqS S, BT &e)
{ if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}//Gettop
Status Push(SqS &S,BT e)
{ //插入元素为e的栈顶元素
if(S.top-S.base>=S.stacksize)
{ //栈满,追加存储空间'
S.base=(BT *)realloc(S.base,(S.