二叉树--递归实现
#include<stdio.h> #include<stdlib.h> #define ElemType int typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild; }BiTNode,*BiTree; int CreateBiTree(BiTree* t) { char ch; scanf("%c",&ch); if(ch==' ') (*t)=NULL; else { (*t) = (BiTNode*)malloc(sizeof(BiTNode)); if(!(*t)) return 0; (*t)->data = ch; CreateBiTree(&(*t)->lchild); CreateBiTree(&(*t)->rchild); } return 1; } void preOrderDisplay(const BiTree* t) { if((*t)==NULL) return; printf("%c",(*t)->data); preOrderDisplay(&(*t)->lchild); preOrderDisplay(&(*t)->rchild); } void inOrderDisplay(const BiTree* t) { if((*t)==NULL) return; inOrderDisplay(&(*t)->lchild); printf("%c",(*t)->data); inOrderDisplay(&(*t)->rchild); } void afterOrderDisplay(const BiTree* t) { if((*t)==NULL) return; afterOrderDisplay(&(*t)->lchild); afterOrderDisplay(&(*t)->rchild); printf("%c",(*t)->data); } int main() { BiTree t; int iRes = CreateBiTree(&t); printf("******the returned result : %d\n",iRes); printf("\n*********preOrderDisplay*********\n"); preOrderDisplay(&t); printf("\n*********inOrderDisplay**********\n"); inOrderDisplay(&t); printf("\n*********afterOrderDisplay*******\n"); afterOrderDisplay(&t); return 1; }