#include#include #define MAX_TREE_SIZE 100 typedef struct { int i; }TElemType; typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; int CreateBiTree(BiTree &T) { char ch; scanf("%c",&ch); getchar(); if(ch==' '||ch=='n') { T=NULL; } else{ T=(BiTNode *)malloc(sizeof(BiTNode)); T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return 1; }//CreateBiTree() int Visit(char ch) { printf("%c",ch); return 1; } int PreOrderTraverse(BiTree T,int (* Visit)(char ch)) { if(T) { if(Visit(T->data)) if(PreOrderTraverse(T->lchild,Visit)) if(PreOrderTraverse(T->rchild,Visit)) return 1; }else return 1; } int InOrderTraverse(BiTree T,int (* Visit)(char ch)) { if(T) { if(InOrderTraverse(T->lchild,Visit)) if(Visit(T->data)) if(InOrderTraverse(T->rchild,Visit)) return 1; }else return 1; } int PostOrderTraverse(BiTree T,int(* Visit)(char ch)) { if(T) { if(PostOrderTraverse(T->lchild,Visit)) if(PostOrderTraverse(T->rchild,Visit)) if(Visit(T->data)) return 1; }else return 1; } int main() { BiTree T; printf("从根节点输入二叉树,存储方式采用中序遍历,无分支请输入空格:n"); CreateBiTree(T); printf("先序遍历为:"); PreOrderTraverse(T,Visit); printf("n"); printf("中序遍历为:"); InOrderTraverse(T,Visit); printf("n"); printf("后序遍历为:"); PostOrderTraverse(T,Visit); }



