#include <conio.h>#include <stdio.h>#include <stdlib.h>#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define OVERFLOW -2typedef int status;typedef struct BiNode...{ char Data; struct BiNode* lChild; struct BiNode* rChild;}BiNode,*pBiNode;status CreateTree(BiNode** pTree);status PreOrderTraval(BiNode* pTree);status Visit(char Data);status Display(BiNode* pTree,int Level);status Clear(BiNode* pTree);BiNode *pRoot=NULL;main()...{ clrscr(); CreateTree(&pRoot); printf(" PreOrder:"); PreOrderTraval(pRoot); printf(" "); printf(" InOrder:"); InOrderTraval(pRoot); printf(" "); printf(" PostOrder:"); PostOrderTraval(pRoot); printf(" "); printf(" ShowLeaves:"); ShowLeaves(pRoot); printf(" ----------------------- "); printf(" "); Display(pRoot,0); printf(" "); printf(" Deleting Tree: "); DelTree(pRoot); printf("BiTree Deleted."); getch();}status CreateTree(BiNode** pTree) /**//*Input Example: abd##e##cf##g##*/...{ char ch; scanf("%c",&ch); if(ch=='#') ...{ (*pTree)=NULL; } else ...{ if(!((*pTree)=(BiNode*)malloc(sizeof(BiNode)))) ...{ exit(OVERFLOW); } (*pTree)->Data=ch; CreateTree(&((*pTree)->lChild)); CreateTree(&((*pTree)->rChild)); }return OK;}status PreOrderTraval(BiNode* pTree)...{ if(pTree) ...{ if(Visit(pTree->Data)) ...{ if(PreOrderTraval(pTree->lChild)) ...{ if(PreOrderTraval(pTree->rChild)) ...{ return OK; } } } return ERROR; } else ...{ return OK; }}status InOrderTraval(BiNode* pTree)...{ if(pTree) ...{ if(InOrderTraval(pTree->lChild)) ...{ if(Visit(pTree->Data)) ...{ if(InOrderTraval(pTree->rChild)) ...{ return OK; } } return ERROR; } return ERROR; } else ...{ return OK; }}status PostOrderTraval(BiNode* pTree)...{ if(pTree) ...{ if(PostOrderTraval(pTree->lChild)) ...{ if(PostOrderTraval(pTree->rChild)) ...{ if(Visit(pTree->Data)) ...{ return OK; } return ERROR; } } return ERROR; } else ...{ return OK; }}status Visit(char Data)...{ printf("%c",Data); return OK;}status Display(BiNode* pTree,int Level)...{ int i; if(pTree==NULL) return; Display(pTree->lChild,Level+1); for(i=0;i<Level-1;i++) ...{ printf(" "); } if(Level>=1) ...{ printf("--"); } printf("%c ",pTree->Data); Display(pTree->rChild,Level+1);}status ShowLeaves(BiNode* pTree)...{ if(pTree) ...{ if(ShowLeaves(pTree->lChild)) ...{ if(ShowLeaves(pTree->rChild)) ...{ if((pTree->lChild==NULL)&&(pTree->rChild==NULL)) ...{ if(!Visit(pTree->Data)) ...{ return ERROR; } } return OK; } } return ERROR; } else ...{ return OK; }}status DelTree(BiNode* pTree)...{ if(pTree) ...{ if(DelTree(pTree->lChild)) ...{ if(DelTree(pTree->rChild)) ...{ printf("Deleting %c ",pTree->Data); free((void*)pTree); return OK; } } return ERROR; } else ...{ return OK; }}