c语言实现二叉树及前中后序遍历

来源:互联网 发布:晋江 百合 知乎 编辑:程序博客网 时间:2024/05/09 10:48

c语言实现二叉树及前中后序遍历(采用递归遍历方式)


#include<stdio.h>#include<stdlib.h>#include<string.h>//定义二叉树节点typedef struct BTNode{char data;struct BTNode *rchild,*lchild;}BTNode,*BTtree;BTtree createBTNode(BTtree ptr, char value, char child){//创建子节点BTtree ptemp = (BTtree)malloc(sizeof(BTNode));if(NULL == ptemp){puts("创建子节点失败!");exit(1);}ptemp->data = value;ptemp->rchild = NULL;ptemp->lchild = NULL;if(child == 'R'){ptr->rchild = ptemp;}else if(child == 'L'){ptr->lchild = ptemp;}return ptemp;}BTtree initBTree(){//首先创建根节点BTtree root = (BTtree)malloc(sizeof(BTNode));if(root == NULL){puts("根节点创建失败");exit(1);}root->data = 'A';root->rchild = NULL;root->lchild = NULL;BTtree pb = createBTNode(root,'B','L');BTtree pc = createBTNode(root,'C','R');BTtree pd = createBTNode(pb,'D','L');BTtree pe = createBTNode(pb,'E','R');BTtree pf = createBTNode(pc,'F','L');BTtree pg = createBTNode(pc,'G','R');return root;}//对二叉树进行先序遍历void preorder(BTtree p){if(p != NULL){printf("%c ",p->data);preorder(p->lchild);    //先序遍历左子树preorder(p->rchild);//先序遍历右子树}}void inorder(BTtree p){if(p != NULL){inorder(p->lchild);printf("%c ",p->data);inorder(p->rchild);}}void postorder(BTtree p){if(p != NULL){postorder(p->lchild);postorder(p->rchild);printf("%c ",p->data);}}int main(){BTtree btroot = initBTree();//printf("%c\n",btroot->data);printf("先序遍历:\n");preorder(btroot);printf("\n中序遍历:\n");inorder(btroot);printf("\n后序遍历:\n");postorder(btroot);return 0;}


原创粉丝点击