二叉树的创建,先序遍历,中序遍历,后序遍历
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
void CreateBiTree(BiTree &T){
TElemType ch;
fflush(stdin);
scanf("%c", &ch);
fflush(stdin);
if('#' == ch){
T = NULL;
}else{
T = (BiTNode *)malloc(sizeof(BiTNode));
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void FirstOrder(BiTree &T){
if(T){
printf("%c ",T->data);
FirstOrder(T->lchild);
FirstOrder(T->rchild);
}
}
void InOrder(BiTree &T){
if(T){
InOrder(T->lchild);
printf("%c ",T->data);
InOrder(T->rchild);
}
}
void LastOrder(BiTree &T){
if(T){
LastOrder(T->lchild);
LastOrder(T->rchild);
printf("%c ",T->data);
}
}
int main(){
printf("*******************二叉树遍历*************************\n");
printf("1、创建二叉树 2、先序遍历 3、中序遍历 4、后序遍历 5、退出\n");
printf("请选择:\n");
int n;
scanf("%d", &n);
while(1){
switch(n){
case 1:
BiTree T;
CreateBiTree(T);
break;
case 2:
FirstOrder(T);
printf("\n");
break;
case 3:
InOrder(T);
printf("\n");
break;
case 4:
LastOrder(T);
printf("\n");
break;
case 5:
exit(1);
default:
printf("输入有误!,请重新输入\n");
break;
}
printf("请选择:\n");
scanf("%d", &n);
}
return 0;
}
还没有评论,来说两句吧...