|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
|
二叉树实现源代码如下:f69Linux联盟 f69Linux联盟 #include <conio.h>f69Linux联盟 #include <stdio.h>f69Linux联盟 #include <stdlib.h>f69Linux联盟 f69Linux联盟 #define OK 1f69Linux联盟 #define ERROR 0f69Linux联盟 #define TRUE 1f69Linux联盟 #define FALSE 0f69Linux联盟 #define OVERFLOW -2f69Linux联盟 typedef int status;f69Linux联盟 f69Linux联盟 typedef struct BiNodef69Linux联盟 {f69Linux联盟 char Data;f69Linux联盟 struct BiNode* lChild;f69Linux联盟 struct BiNode* rChild;f69Linux联盟 }BiNode,*pBiNode;f69Linux联盟 f69Linux联盟 status CreateTree(BiNode** pTree);f69Linux联盟 status PreOrderTraval(BiNode* pTree);f69Linux联盟 status Visit(char Data);f69Linux联盟 status Display(BiNode* pTree,int Level);f69Linux联盟 status Clear(BiNode* pTree);f69Linux联盟 f69Linux联盟 BiNode *pRoot=NULL;f69Linux联盟 f69Linux联盟 main()f69Linux联盟 {f69Linux联盟 clrscr();f69Linux联盟 CreateTree(&pRoot);f69Linux联盟 f69Linux联盟 printf("\nPreOrder:");f69Linux联盟 PreOrderTraval(pRoot);f69Linux联盟 printf("\n");f69Linux联盟 f69Linux联盟 printf("\nInOrder:");f69Linux联盟 InOrderTraval(pRoot);f69Linux联盟 printf("\n");f69Linux联盟 f69Linux联盟 printf("\nPostOrder:");f69Linux联盟 PostOrderTraval(pRoot);f69Linux联盟 printf("\n");f69Linux联盟 f69Linux联盟 printf("\nShowLeaves:");f69Linux联盟 ShowLeaves(pRoot);f69Linux联盟 printf("\n-----------------------\n");f69Linux联盟 printf("\n");f69Linux联盟 f69Linux联盟 Display(pRoot,0);f69Linux联盟 f69Linux联盟 printf("\n");f69Linux联盟 printf("\nDeleting Tree:\n");f69Linux联盟 DelTree(pRoot);f69Linux联盟 printf("BiTree Deleted.");f69Linux联盟 f69Linux联盟 getch();f69Linux联盟 }f69Linux联盟 status CreateTree(BiNode** pTree) /*Input Example: abd##e##cf##g##*/f69Linux联盟 {f69Linux联盟 char ch;f69Linux联盟 scanf("%c",&ch);f69Linux联盟 if(ch==‘#‘)f69Linux联盟 {f69Linux联盟 (*pTree)=NULL;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 if(!((*pTree)=(BiNode*)malloc(sizeof(BiNode))))f69Linux联盟 {f69Linux联盟 exit(OVERFLOW);f69Linux联盟 }f69Linux联盟 (*pTree)->Data=ch;f69Linux联盟 CreateTree(&((*pTree)->lChild));f69Linux联盟 CreateTree(&((*pTree)->rChild));f69Linux联盟 }f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 status PreOrderTraval(BiNode* pTree)f69Linux联盟 {f69Linux联盟 if(pTree)f69Linux联盟 {f69Linux联盟 if(Visit(pTree->Data))f69Linux联盟 {f69Linux联盟 if(PreOrderTraval(pTree->lChild))f69Linux联盟 {f69Linux联盟 if(PreOrderTraval(pTree->rChild))f69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 status InOrderTraval(BiNode* pTree)f69Linux联盟 {f69Linux联盟 if(pTree)f69Linux联盟 {f69Linux联盟 if(InOrderTraval(pTree->lChild))f69Linux联盟 {f69Linux联盟 if(Visit(pTree->Data))f69Linux联盟 {f69Linux联盟 if(InOrderTraval(pTree->rChild))f69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 status PostOrderTraval(BiNode* pTree)f69Linux联盟 {f69Linux联盟 if(pTree)f69Linux联盟 {f69Linux联盟 if(PostOrderTraval(pTree->lChild))f69Linux联盟 {f69Linux联盟 if(PostOrderTraval(pTree->rChild))f69Linux联盟 {f69Linux联盟 if(Visit(pTree->Data))f69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 status Visit(char Data)f69Linux联盟 {f69Linux联盟 printf("%c",Data);f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 status Display(BiNode* pTree,int Level)f69Linux联盟 {f69Linux联盟 int i;f69Linux联盟 if(pTree==NULL) return;f69Linux联盟 Display(pTree->lChild,Level+1);f69Linux联盟 for(i=0;i<Level-1;i++)f69Linux联盟 {f69Linux联盟 printf(" ");f69Linux联盟 }f69Linux联盟 if(Level>=1)f69Linux联盟 {f69Linux联盟 printf("--");f69Linux联盟 }f69Linux联盟 printf("%c\n",pTree->Data);f69Linux联盟 Display(pTree->rChild,Level+1);f69Linux联盟 }f69Linux联盟 status ShowLeaves(BiNode* pTree)f69Linux联盟 {f69Linux联盟 if(pTree)f69Linux联盟 {f69Linux联盟 if(ShowLeaves(pTree->lChild))f69Linux联盟 {f69Linux联盟 if(ShowLeaves(pTree->rChild))f69Linux联盟 {f69Linux联盟 if((pTree->lChild==NULL)&&(pTree->rChild==NULL))f69Linux联盟 {f69Linux联盟 if(!Visit(pTree->Data))f69Linux联盟 {f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 } f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 status DelTree(BiNode* pTree)f69Linux联盟 {f69Linux联盟 if(pTree)f69Linux联盟 {f69Linux联盟 if(DelTree(pTree->lChild))f69Linux联盟 {f69Linux联盟 if(DelTree(pTree->rChild))f69Linux联盟 {f69Linux联盟 printf("Deleting %c\n",pTree->Data);f69Linux联盟 free((void*)pTree);f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }f69Linux联盟 return ERROR;f69Linux联盟 }f69Linux联盟 elsef69Linux联盟 {f69Linux联盟 return OK;f69Linux联盟 }f69Linux联盟 }
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|