这篇文章主要介绍“c语言如何构建一个静态二叉树”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“c语言如何构建一个静态二叉树”文章能帮助大家解决问题。
第一、树的构建
定义树结构
struct BTNode { char data; struct BTNode* pLChild; struct BTNode* pRChild; };
静态方式创建一个简单的二叉树
struct BTNode* create_list() { struct BTNode* pA = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pB = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pC = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pD = (struct BTNode*)malloc(sizeof(BTNode)); struct BTNode* pE = (struct BTNode*)malloc(sizeof(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; }
第二、树的三种遍历
1. 先序遍历
//先序输出 void PreTravense(struct BTNode* pHead) { if (NULL!= pHead) { printf("%c", pHead->data); if (NULL!= pHead->pLChild) { PreTravense(pHead->pLChild); } if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } } }
2. 中序遍历
//中序输出 void InTravense(struct BTNode* pHead) { if (NULL != pHead) { if (NULL != pHead->pLChild) { PreTravense(pHead->pLChild); } printf("%c", pHead->data); if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } } }
3.后续遍历
//后序输出 void PostTravense(struct BTNode* pHead) { if (NULL != pHead) { if (NULL != pHead->pLChild) { PreTravense(pHead->pLChild); } if (NULL != pHead->pRChild) { PreTravense(pHead->pRChild); } printf("%c", pHead->data); } }
第三、最终运行测试
int main() { printf("创建序列\n"); struct BTNode* pHead = create_list(); printf("先序输出\n"); PreTravense(pHead); printf("中序输出\n"); InTravense(pHead); printf("后序输出\n"); PostTravense(pHead); return 0; }
关于“c语言如何构建一个静态二叉树”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。