2008
11-27

这学期在学数据结构,用到了树的递归,我写了一段程序却老是有问题,麻烦大家帮我看一下哈。


#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);
}


问题大概就是在遍历那一段上,我不知道是遍历有问题还是函数调用有问题,麻烦大家帮我看一下,谢谢啊


留下一个回复