【数据结构初阶】二叉树的前中后序构建

前中后序简介

二叉树的遍历主要有三种:

(1)先(根)序遍历(根左右)

(2)中(根)序遍历(左根右)

(3)后(根)序遍历(左右根) 图例:

前:ABDECFG 中:DBEAFCG 后:DEBFGCA

代码实现

对树的构建并不是每一个树都是满二叉树也会有NULL;当我们创建树的时候要想到NULL的这一结点,我们将树的数据想成无限长的数组,通过指针pi的++来存下一个数据。 没来一个数据就创建一个树结点(结构体),当树为空树时候判断直接返回NULL,还有一种是叶结点++pi返回给NULL值。 如果不是NULL进入else,通过之前的介绍前序(根-左-右)当存入一个数据时候pi要++准备下一个数据存入。不然就会覆盖 覆盖 覆盖。 前序:

BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi);
{
          
   
	if (a[*pi] == #||*pi>=n)//#代表NULL
	{
          
   
		(*pi)++;
		return NULL;
	}
	else

		BTNode* root = (BTNode*)malloc(sizeof(BTNode));
		root->_data = a[*pi];
		(*pi)++;
		root->_left = BinaryTreeCreate(a, n, pi);
		root->_right = BinaryTreeCreate(a, n, pi);
		return root;
}

后序:

root->_left = BinaryTreeCreate(a, n, pi);
		root->_+right = BinaryTreeCreate(a, n, pi);
		root->_data = a[*pi];
		(*pi)++;

中序:

root->_left = BinaryTreeCreate(a, n, pi);
		root->_data = a[*pi];
		(*pi)++;
		root->_+right = BinaryTreeCreate(a, n, pi);
经验分享 程序员 微信小程序 职场和发展