c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历 |
您所在的位置:网站首页 › C语言ABCDEF › c语言ABCDEF前中后序遍历,c语言实现二叉树及前中后序遍历 |
c语言实现二叉树及前中后序遍历(采用递归遍历方式) #include #include #include //定义二叉树节点 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; } |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |