标签:
输入AB#D##C##回车,或者按照规则自己去输入,
规则就是按前序遍历的方式输入,
#include<cstdio>
#include<cstdlib>
#include<cstring>
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void Init(BiTree *T){
if(!((*T)=(BiTree)malloc(sizeof(BiTNode)))) exit(0);
*T = NULL;
}
void PreOrderTraverse(BiTree T){ //前序遍历算法
if(T == NULL) return;
printf("%c\n",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
void InOrderTraverse(BiTree T){ //中序遍历算法
if(T == NULL) return;
InOrderTraverse(T->lchild);
printf("%c\n",T->data);
InOrderTraverse(T->rchild);
}
void PostOrderTraverse(BiTree T){ //后序遍历算法
if(T == NULL) return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c\n",T->data);
}
void CreateBiTree(BiTree *T){ //创建二叉树 AB#D##C##回车
char ch;
scanf("%c",&ch);
if(ch == ‘#‘) *T = NULL;
else{
*T = (BiTree)malloc(sizeof(BiTNode));
if(!*T) exit(0);
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
int main(){
BiTree T;
// Init(&T);
CreateBiTree(&T);
printf("前序遍历为:\n");
PreOrderTraverse(T);
printf("中序遍历为:\n");
InOrderTraverse(T);
printf("后序遍历为:\n");
PostOrderTraverse(T);
return 0 ;
}
标签:
原文地址:http://www.cnblogs.com/zhuozhuo/p/5408599.html