郝斌---静态二叉树

来源:互联网 发布:速途网络 2016年年报 编辑:程序博客网 时间:2024/06/11 20:57
#include<stdio.h>#include<malloc.h>struct BTNode{char data;struct BTNode* pLchild;//p是指针、L是左、child是孩子struct BTNode* pRchild;};struct BTNode*  createBTree(void);void PreTraverseBTree(struct BTNode*  pT);void InTraverseBTree(struct BTNode*  pT);void PostTraverseBTree(struct BTNode*  pT);int main(void){struct BTNode* pT = createBTree( );printf("先序遍历为:\n");PreTraverseBTree(pT);printf("\n");printf("中序遍历为:\n");    InTraverseBTree(pT);printf("\n");printf("后序遍历为:\n");PostTraverseBTree(pT);printf("\n");return 0;}struct BTNode*  createBTree(void){struct BTNode* pA = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pB = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pC = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pD = (struct BTNode *)malloc(sizeof(struct BTNode));struct BTNode* pE = (struct BTNode *)malloc(sizeof(struct BTNode));pA->data = 'A';pB->data = 'B';pC->data = 'C';pD->data = 'D';pE->data = 'E';pA->pLchild = pB;pA->pRchild = pC;pB->pLchild = pB->pRchild = NULL;pC->pLchild = pD;pC->pRchild = NULL;pD->pLchild = NULL;pD->pRchild = pE ;pE->pLchild = pE->pRchild = NULL;return pA;}void PreTraverseBTree(struct BTNode* pT){if (pT != NULL){   printf("%c\n", pT->data);   if (pT->pLchild != NULL)   {         PreTraverseBTree(pT->pLchild);   }   if (pT->pRchild != NULL)   {   PreTraverseBTree(pT->pRchild);   }   }//pT->pLchild可以代表整个左子树    /*先序伪算法:先访问根节点再先序访问左子树在先序访问右子树    */}void InTraverseBTree(struct BTNode* pT){if (pT != NULL){if (pT->pLchild != NULL){InTraverseBTree(pT->pLchild);}        printf("%c\n", pT->data);if (pT->pRchild != NULL){InTraverseBTree(pT->pRchild);}}}void PostTraverseBTree(struct BTNode* pT){if (pT != NULL){if (pT->pLchild != NULL){PostTraverseBTree(pT->pLchild);}if (pT->pRchild != NULL){PostTraverseBTree(pT->pRchild);}        printf("%c\n", pT->data);}}

0 0
原创粉丝点击