4.链式二叉树_静态_遍历
来源:互联网 发布:南风知我意2 全文阅读 编辑:程序博客网 时间:2024/04/28 21:03
/* * 静态创建链式二叉树 先中后遍历 * */#include <stdio.h>#include <stdlib.h>typedef struct Btnode { char data; //数据 struct Btnode* plchild; //左子树 struct Btnode* prchild; //右子树} BTNODE;BTNODE* create_btree();void pre_traverse_btree(BTNODE* pt); //创建二叉树void in_traverse_btree(BTNODE* pt); //先序遍历void post_traverse_btree(BTNODE* pt); //后序遍历int main(){ BTNODE* pT = create_btree(); printf("先序遍历:\n"); pre_traverse_btree(pT); //先序遍历 printf("\n\n"); printf("中序遍历:\n"); in_traverse_btree(pT); //中序遍历 printf("\n\n"); printf("后序遍历:\n"); post_traverse_btree(pT); //后序遍历 printf("\n"); return 0;}/*创建二叉树*/BTNODE* create_btree(){ BTNODE* pa = (BTNODE*)malloc(sizeof(BTNODE)); BTNODE* pb = (BTNODE*)malloc(sizeof(BTNODE)); BTNODE* pc = (BTNODE*)malloc(sizeof(BTNODE)); BTNODE* pd = (BTNODE*)malloc(sizeof(BTNODE)); BTNODE* pe = (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;}/*先序遍历*/void pre_traverse_btree(BTNODE* pt){ if (pt) { /*遍历根*/ printf(" -> "); printf("%c", pt->data); /*遍历左子树*/ if (pt->plchild) pre_traverse_btree(pt->plchild); /*遍历右子树*/ if (pt->prchild) pre_traverse_btree(pt->prchild); }}/*中序遍历*/void in_traverse_btree(BTNODE* pt){ if (pt) { /*遍历左子树*/ if (pt->plchild) in_traverse_btree(pt->plchild); /*遍历根*/ printf(" -> "); printf("%c", pt->data); /*遍历右子树*/ if (pt->prchild) in_traverse_btree(pt->prchild); } }/*后序遍历*/void post_traverse_btree(BTNODE* pt){ if (pt) { /*遍历左子树*/ if (pt->plchild) post_traverse_btree(pt->plchild); /*遍历右子树*/ if (pt->prchild) post_traverse_btree(pt->prchild); /*遍历根*/ printf(" -> "); printf("%c", pt->data); }}