龙空技术网

二叉树的前序中序后序三种遍历算法的C语言实现

大巴学长 166

前言:

而今看官们对“c语言二叉树的先序中序后序遍历”大约比较着重,你们都想要了解一些“c语言二叉树的先序中序后序遍历”的相关文章。那么小编同时在网上收集了一些有关“c语言二叉树的先序中序后序遍历””的相关内容,希望小伙伴们能喜欢,姐妹们快快来了解一下吧!

二叉树,是数据结构这门课的重要知识点,也是考研必考的知识点。关于二叉树的遍历算法, 主要有前序遍历,中序遍历,后序遍历,层序遍历。本文着重介绍前序遍历,中序遍历,后序遍历这三种算法。树的遍历,一般都是递归遍历,本文也采用递归遍历实现。为了更好的掌握算法,建议大家上机调试,这样掌握的更牢固。

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>

#define OK 1

#define ERROR 0

#define NULL 0

#define OVERFLOW -2

typedef int Status;

typedef char TElemType;

/*二叉树的二叉链表存储表示*/

typedef struct BiTNode{

TElemType data;

struct BiTNode *lchild, *rchild; //左右孩子指针

}BiTNode, *BiTree;

/*建立二叉链表*/

Status CreateBiTree(BiTree &T){

//按先序次序输入二叉树中结点值,空格表示空树

//构造二叉链表表示的二叉树

char ch;

scanf("%c",&ch);

//ch=getchar();

if(ch==' ')

T=NULL;

else

{

if(!(T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(OVERFLOW);

T->data=ch;

CreateBiTree(T->lchild);

CreateBiTree(T->rchild);

}

return OK;

}

/*打印二叉树的内容*/

Status PrintElement(char ch)

{

printf("%c",ch);

return OK;

}

/*先序遍历二叉树,递归算法*/

Status PreOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))

{

if(T)

{

if(PrintElement(T->data))

if(PreOrderTraverse(T->lchild,PrintElement))

if(PreOrderTraverse(T->rchild,PrintElement))

return OK;

return ERROR;

}

else return OK;

}

/*中序遍历二叉树,递归算法*/

Status InOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))

{

if(T)

{

if(InOrderTraverse(T->lchild,PrintElement))

if(PrintElement(T->data))

if(InOrderTraverse(T->rchild,PrintElement))

return OK;

return ERROR;

}

else return OK;

}

/*后序遍历二叉树,递归算法*/

Status PostOrderTraverse(BiTree T,Status(*PrintElement)(TElemType e))

{

if(T)

{

if(PostOrderTraverse(T->lchild,PrintElement))

if(PostOrderTraverse(T->rchild,PrintElement))

if(PrintElement(T->data))

return OK;

return ERROR;

}

else return OK;

}

int main()

{ BiTree T;

printf("请输入二叉树:");

printf("\n");

CreateBiTree(T);

printf("先序遍历:");

printf("\n");

PreOrderTraverse(T,PrintElement);

printf("\n");

printf("中序遍历:");

printf("\n");

InOrderTraverse(T,PrintElement);

printf("\n");

printf("后序遍历:");

printf("\n");

PostOrderTraverse(T,PrintElement);

printf("\n");

return 0;

}

想了解最新考研资讯和院校指导,点击上方头像关注我,或给我发私信,也可关注上方图片右下角的账号,为你提供最新考研干货。

标签: #c语言二叉树的先序中序后序遍历 #二叉树先序遍历递归算法c语言版 #数据结构先序遍历二叉树代码 #先序遍历输出二叉树所有结点的数据值及结点所在的层 #二叉树先序遍历递归算法代码