#include
#include
typedef struct BiTNode{
char data;
struct BiTNode *lchild, *rchild; //左右孩子指针
}BiTNode, *BiTree;
//二叉树的二叉链表存储表示
int CreateBiTree(BiTree*T){ //先序建立二叉树
char ch;
printf("请输入字符\n");
scanf("%c",&ch);
if(ch=' '){
T=NULL;
}
else if(!(*T=(BiTree)malloc(sizeof(BiTNode))))
return 0;
(*T)->data=ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
return 1;
printf("%c",&ch);
}
int PreOrderTraverse(BiTree T){
if(T){
printf("%c",&T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}return 1;
} //先序遍历
int InOrderTraverse(BiTree T){
if(T){
InOrderTraverse(T->lchild);
printf("%c",&T->data);
InOrderTraverse(T->rchild);
}
return 1;
} //中序遍历
int PostOrderTraverse(BiTree T){
if(T){
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",&T->data);
}
return 1;
} //后序遍历
int main(){
BiTree T;
int choose;
while(1){
printf("*********菜单********\n");
printf("* 1、先序建立 \n");
printf(" 2、先序遍历 \n");
printf(" 3、中序遍历 \n");
printf(" 4、后序遍历 \n");
printf(" 0、退出 \n");
printf("********************\n");
scanf("%d",&choose);
if(choose==0){
break;
}
switch(choose){
case 1:
CreateBiTree(&T);
break;
case 2:
PreOrderTraverse(T);
break;
case 3:
InOrderTraverse(T);
break;
case 4:
PostOrderTraverse(T);
break;
}
}
}