数据结构二叉树的建立以及递归遍历

来源:互联网 发布:网络药品销售 编辑:程序博客网 时间:2024/06/05 06:59
/* Note:Your choice is C IDE */#include "stdio.h"#include "stdlib.h"#define OK 1#define ERROR 0#define OVERFLOW -1typedef char TElemType;typedef int Status;/*************struct***************/typedef struct BTNode{TElemType data;struct BTNode *lchild;struct BTNode *rchild;}BTNode,*BiTree;/************create***************/Status CreateBiTree_L(BiTree *T){char a;a=getchar();if (a=='#') *T=NULL;else {(*T)=(BiTree)malloc(sizeof(BTNode));if(!(*T))exit(OVERFLOW);    (*T)->data=a;    getchar();    CreateBiTree_L(&(*T)->lchild);    getchar();    CreateBiTree_L(&(*T)->rchild);}return OK;}/********************PreOrder****************/Status PreOrderTraverse(BiTree T){if(T){if(!printf("%5c",T->data))return ERROR;PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}return OK;}/********************InOrder****************/Status InOrderTraverse(BiTree T){if(T){InOrderTraverse(T->lchild);if(!printf("%5c",T->data))return ERROR;InOrderTraverse(T->rchild);}return OK;}/********************PostOrder****************/Status PostOrderTraverse(BiTree T){if(T){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);if(!printf("%5c",T->data))return ERROR;}return OK;}void main(){BiTree T1;printf("Please enter value for node,if lchild or rchild is empty ,please enter #\n");    CreateBiTree_L(&T1);    printf("printf datas in PreOrder\n");    PreOrderTraverse(T1);    printf("\nprintf datas in IneOrder\n");    InOrderTraverse(T1);    printf("\nprintf datas in PostOrder\n");    PostOrderTraverse(T1);    system("pause");}


 

原创粉丝点击