#include #include typedef char ElemType; typedef struct BiTreeNode{ ElemType data; struct BiTreeNode *lchild; struct BiTreeNode *rchild; }BITREENODE,*BITREEPT; void CreatBiTree(BITREEPT *T); void TreePreTrav(BITREEPT T); void TreeMidTrav(BITREEPT T); void TreeLastTrav(BITREEPT T); int main() { BITREEPT TreeRoot; CreatBiTree(&TreeRoot); printf("\nPreOder:"); TreePreTrav(TreeRoot); printf("\nMidOder:"); TreeMidTrav(TreeRoot); printf("\nLastOder:"); TreeLastTrav(TreeRoot); return 0; } void CreatBiTree(BITREEPT *T) { char ch; ch=getchar(); if(ch=='#'||ch=='\n') *T=NULL; else { *T=(BITREEPT)malloc(sizeof(BITREENODE)); (*T)->data=ch; CreatBiTree(&((*T)->lchild)); CreatBiTree(&((*T)->rchild)); } } void TreePreTrav(BITREEPT T) { //先序遍历(前序遍历) if(T!=NULL) { printf("%c ",T->data); TreePreTrav(T->lchild); TreePreTrav(T->rchild); } } void TreeMidTrav(BITREEPT T) { //中序遍历 if(T!=NULL) { TreeMidTrav(T->lchild); printf("%c ",T->data); TreeMidTrav(T->rchild); } } void TreeLastTrav(BITREEPT T) { //中序遍历 if(T!=NULL) { TreeLastTrav(T->lchild); TreeLastTrav(T->rchild); printf("%c ",T->data); } }