代码可运行,但结果不对,没有运行完,这是怎么回事捏?谢谢帮助!
#include<stdio.h>
#include<stdlib.h>
typedef char TElemType ;
#define ERROR 0;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;
//先序遍历创建二叉树
BiTree creatbitree(BiTree T){
TElemType ch;
printf("请按照先序遍历输入二叉树:");
scanf("%c",ch);
if(ch=='&') T=NULL;//@代表空格字符
else{
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;//生成根结点
T->lchild=creatbitree(T->lchild);//生成左子树
T->rchild=creatbitree(T->rchild);//生成右子树
}
printf("二叉树创建成功!");
return T; }
//先序遍历
void preorder(BiTree T) {
printf("先序遍历二叉树:");
if(T){
printf("%c ",T->data);
preorder(T->lchild);
preorder(T->rchild);}
else printf("空树!"); }
//中序递归遍历
void inorder(BiTree T){
printf("中序递归遍历二叉树:") ;
if(T){
inorder(T->lchild) ;
printf("%c ",T->data);
inorder(T->rchild);}
else printf("空树!") ; }
//后序遍历
void postorder(BiTree T){
printf("后序遍历二叉树:");
if(T){
postorder(T->lchild);
postorder(T->rchild);
printf("%c ",T->data);}
else printf("空树!"); }
int main(){
BiTree S,T;
S=NULL;
T=creatbitree(S);
preorder(T) ;
inorder(T);
postorder(T);
return 0;
}
这是我的运行结果:
二叉树如图: