这学期在学数据结构,用到了树的递归,我写了一段程序却老是有问题,麻烦大家帮我看一下哈。
#include<stdio.h>
#include <conio.h>
#define NULL 0
#define OK 1
#define OVERFLOW -2
#define ERROR -1
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}bitnode;
bitnode *creat()/*先序建立二叉树*/
{
bitnode *t;
char ch;
ch=getch();putch(ch);
if(ch==’#') t=NULL;
else
{
t=(bitnode *)malloc(sizeof(bitnode));
if(!t)
{
printf(“先序建立二叉树失败!”);
exit(OVERFLOW);
}
t->data=ch;
t->lchild=creat();
t->rchild=creat();
}
return(t);
}
/*先序遍历*/
int pre(bitnode *t,int (*visit)())
{
if(t)
{
if(visit(t))
if(pre(t->lchild,visit(t->lchild)))
if(pre(t->rchild,visit(t->rchild)))
return OK;
return ERROR;
}else
return OK;
}
int print(bitnode *t)
{
printf(“\n%c”,t->data);
return OK;
}
void main()
{
bitnode *t1;
t1=creat();
pre(t1,print);
}
问题大概就是在遍历那一段上,我不知道是遍历有问题还是函数调用有问题,麻烦大家帮我看一下,谢谢啊
>> 本文固定链接: http://www.vcgood.com/archives/2935