#include
typedef struct BiTNode {
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
} *BiTree;
BiTree CreateBiTree(BiTree T){
char ch;
scanf("%c",&ch);
if (ch=="#"){
return NULL;
}else {
T = (BiTree)malloc(sizeof(struct BiTNode)) ;
T->data = ch;
T->lchild=CreateBiTree(T->lchild);
T->rchild=CreateBiTree(T->rchild);
return T;
}
void PreOrder(BiTree &T){
if(T){
printf("%c ",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
void InOrder(BiTree &T){
InOrder(T->lchild);
InOrder(T->rchild);
void PostOrder(BiTree &T){
PostOrder(T->lchild);
PostOrder(T->rchild);
void ShowBiTree(BiTree &bt)
{
if (bt!=NULL){
printf("%c",bt->data);
if (bt->rchild!=NULL||bt->lchild!=NULL){
printf("(");
ShowBiTree(bt->lchild);
if (bt->rchild!=NULL){
printf(",");
ShowBiTree(bt->rchild);
printf(")");
int main()
printf("請依次輸入字元: abd#g##e##c#fh###\n");
BiTree T;
T = CreateBiTree(T);
printf("先序遍歷: \n");
PreOrder(T);
printf("\n中序遍歷: \n");
InOrder(T);
printf("\n後序遍歷: \n");
PostOrder(T);
printf("\n用括號表示法輸出二叉樹:\n");
ShowBiTree(T);
printf("\n");
system("pause");
return 0;
#include
#include
#include
typedef struct BiTNode {
char data;
struct BiTNode *lchild;
struct BiTNode *rchild;
} *BiTree;
BiTree CreateBiTree(BiTree T){
char ch;
scanf("%c",&ch);
if (ch=="#"){
return NULL;
}else {
T = (BiTree)malloc(sizeof(struct BiTNode)) ;
T->data = ch;
T->lchild=CreateBiTree(T->lchild);
T->rchild=CreateBiTree(T->rchild);
return T;
}
}
void PreOrder(BiTree &T){
if(T){
printf("%c ",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BiTree &T){
if(T){
InOrder(T->lchild);
printf("%c ",T->data);
InOrder(T->rchild);
}
}
void PostOrder(BiTree &T){
if(T){
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c ",T->data);
}
}
void ShowBiTree(BiTree &bt)
{
if (bt!=NULL){
printf("%c",bt->data);
if (bt->rchild!=NULL||bt->lchild!=NULL){
printf("(");
ShowBiTree(bt->lchild);
if (bt->rchild!=NULL){
printf(",");
}
ShowBiTree(bt->rchild);
printf(")");
}
}
}
int main()
{
printf("請依次輸入字元: abd#g##e##c#fh###\n");
BiTree T;
T = CreateBiTree(T);
printf("先序遍歷: \n");
PreOrder(T);
printf("\n中序遍歷: \n");
InOrder(T);
printf("\n後序遍歷: \n");
PostOrder(T);
printf("\n用括號表示法輸出二叉樹:\n");
ShowBiTree(T);
printf("\n");
system("pause");
return 0;
}