简易二叉树的实现(前中后序的实现)

 我们先构造一个简单的二叉树

代码实现:

#include 
#include 
//重定义数据类型
typedef char DataType;
//创建简易的二叉树结构体
typedef struct BTNode
{
	struct BTNode* left;
	struct BTNode* right;
	DataType data;
}BTNode;
//前序(根左右)
void Prev(BTNode* root)
{
	//判空
	if (root == NULL)
	{
		printf("NULL ");
		return;
	}
	printf("%c ", root->data);
	Prev(root->left);
	Prev(root->right);
}
//中序(左根右)
void Inmid(BTNode* root)
{
	//判空
	if (root == NULL)
	{
		printf("NULL ");
		return 0;
	}
	Inmid(root->left);
	printf("%c ", root->data);
	Inmid(root->right);
}
//后序(左右根)
void Pose(BTNode* root)
{
	//判空
	if (root == NULL)
	{
		printf("NULL ");
		return;
	}
	Pose(root->right);
	printf("%c ", root->data);
	Pose(root->left);
}
//初始化以及赋值树
int main()
{
	BTNode* A = (BTNode*)malloc(sizeof(BTNode));
	A->left = NULL;
	A->right = NULL;
	A->data = 'A';
	BTNode* B = (BTNode*)malloc(sizeof(BTNode));
	B->left = NULL;
	B->right = NULL;
	B->data = 'B';
	BTNode* C = (BTNode*)malloc(sizeof(BTNode));
	C->left = NULL;
	C->right = NULL;
	C->data = 'C';
	BTNode* D = (BTNode*)malloc(sizeof(BTNode));
	D->left = NULL;
	D->right = NULL;
	D->data = 'D';
	BTNode* E = (BTNode*)malloc(sizeof(BTNode));
	E->left = NULL;
	E->right = NULL;
	E->data = 'E';
	//赋值
	A->data = 'A';
	A->left = B;
	A->right = C;
	B->data = 'B';
	B->left = D;
	B->right = E;
	Prev(A);
	printf("\n");
	return 0;
}

讲解(图解加文字解释):

简易二叉树的实现(前中后序的实现)_第1张图片

简易二叉树的实现(前中后序的实现)_第2张图片

简易二叉树的实现(前中后序的实现)_第3张图片

 解释:

(我们程序中值调用了前序(即先打印根再打印左,再打印右))

我们先传A过去,A不为空则进行打印,再进行left,A的left为B,B不为空则进行打印,再进行B的left,B的left为D,D不为空打印D,再进行D的left,D的left为空则打印空返回,再进行D的right,D的righ为空打印,再返回到D,D打印完后返回到C,C再进行right , C的right为F,F不为空打印,再进行F的left和right都为空再返回到F,打印完后再返回到C,C左右都打印完了再返回到A,A的左和右都打印完了,最终程序结束                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

你可能感兴趣的:(数据结构,c语言,数据结构,二叉树,树,学习方法)