#include #include typedef char DataType; typedef struct BiTNode { DataType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //二叉树树的建立 先序 void CreateBiTree(BiTree T) { char ch; if((ch=getchar())=='') *T=NULL; //读入为空,将相应指针置空 else { *T=(BiTree)malloc(sizeof(BiTNode)); *T->data=ch; CreateBiTree(T->lchild);//构造左树 CreateBiTree(T->rchild);//构造右树 } } //CreateBiTree Status PreOrderTraverse(BiTree T,Status(*Visit)(DataType e)) { if(T) { if(Visit(T->data)) if(PreOrderTraverse(T->lchild,Visit)) if(PreOrderTraverse(T->rchild,Visit)) return OK; return ERROR; } else return OK; }//PreOrderTraverse
//中序遍历二叉树 采用链表结构存储 Status InOrderTraverse(BiTree T,Status(*Visit)(DataType e)) { if(T) { if(InOrderTraverse(T->lchild,Visit)) if(Visit(T->data)) if(InOderTraverse(T->rchild,Visit)) return OK; else return ERROR; } else return OK; }//InOrderTraverse
//------后序遍历二叉树---- Status EndOrderTraverse(BiTree T,(*Visit)(DataType e)) { if(T) { if(EndOrderTraverse(T->lchild,Visit)) if(EndOrderTraverse(T->rchild,Visit)) if(Visit(T->data)) return OK; return ERROR; } else return OK; }//EndOrderTraverse int main() { return 0; }