该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define NULL 0
typedef int Elemtype;
typedef struct Tnode { Elemtype data;
struct Tnode *lchild;
struct Tnode *rchild;
}SqTree;
SqTree *CreatBinaryTree(void) //按中序创建一个二叉树
{ SqTree *p;
int num;
scanf("%d",&num);
if(num==-1) p=NULL;
else { p->lchild=CreatBinaryTree();
p=(SqTree *)malloc(sizeof(SqTree));
p->data=num;
p->rchild=CreatBinaryTree();
}
return p;
}
void PreOrder(SqTree *root) //对已建好的二叉树进行先序遍历
{ SqTree *p;
p=root;
if(p){ printf("%3d",p->data);
PreOrder(p->lchild);
PreOrder(p->rchild);
}
}
void InOrder(SqTree *root) //对已建好的二叉树进行中序遍历
{ SqTree *p;
p=root;
if(p){ InOrder(p->lchild);
printf("%3d",p->data);
InOrder(p->rchild);
}
}
void PostOrder(SqTree *root) //对已建好的二叉树进行后序遍历
{ SqTree *p;
p=root;
if(p){ PostOrder(p->lchild);
PostOrder(p->rchild);
printf("%3d",p->data);
}
}
void main(void)
{ SqTree *ROOT;
ROOT=CreatBinaryTree();
printf("\nThe result of PreOrder:\n");
PreOrder(ROOT);
printf("\nThe result of InOrder:\n");
InOrder(ROOT);
printf("\nThe result of PostOrder:\n");
PostOrder(ROOT);
}
在创建二叉树时,我采用了中序顺序,已经没有语法错误,可是为什么不能得出正确的结果呢?