二叉树的遍历(前序中序后序)

#include <stdio.h>
#define MAXSIZE 100
#define OVERFLOW -1
#define Status int
#define bool int
#define true 1
#define flase 0
#define ElemType char

typedef struct BiTNode{
	ElemType data;
	struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;

//先序遍历初始化二叉树 
BiTree InitBiTree(BiTree T)
{ 
	char ch;
	scanf("%c", &ch);
	if ( ch == '#') T=NULL;
	else {
		T = (BiTree)malloc(sizeof(struct BiTNode));
		T->data = ch;
		T->lchild = InitBiTree(T->lchild);
		T->rchild = InitBiTree(T->rchild);	
	}
	return T;
}
//先序遍历
void PreOrder(BiTree T)
{
	if (T!=NULL)
	{
		printf("%c", T->data);
		PreOrder(T->lchild);
		PreOrder(T->rchild);
	}
}
//中序遍历
void MidOrder(BiTree T)
{
	if (T!=NULL)
	{
		MidOrder(T->lchild);
		printf("%c", T->data);
		MidOrder(T->rchild);
	}
	
}
//后续遍历
void BackOrder(BiTree T)
{
	if (T!=NULL)
	{
		BackOrder(T->lchild);
		BackOrder(T->rchild);
		printf("%c", T->data);
	}
	
}

int main()
{
	int num;
	BiTree T;
	
	T = InitBiTree(T);
	printf("前序遍历\n"); 
	PreOrder(T);
	printf("\n");

	printf("中序遍历\n");
	MidOrder(T);
	printf("\n"); 
	
	printf("后序遍历\n");
	BackOrder(T);
	printf("\n"); 
	
	return 0;
}
//ABD##E##CF##G##

猜你喜欢

转载自blog.csdn.net/weixin_46272577/article/details/111402488