zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言:从数组获取数据创建二叉树

C语言二叉树数组 创建 获取数据
2023-09-27 14:22:46 时间
BTree CreateBT(int A[], int i, int n) 
{ 
	BTree p; 
	if (i > n) 
		return NULL; 
	else { 
		p = (BTree)malloc(sizeof(BTNode)); 
		p->data = A[i]; 
		p->lchild = CreateBT(A, 2*i, n); 
		p->rchild = CreateBT(A, 2*i+1, n); 
		return p; 
	} 
} 
T = CreateBT(A, 1, n); 
-------------------------------------------------------- 
BTree CreateBT(int A[], int n) 
{ 
	int i; 
	BTree *pT; 
	// 对应 n 个结点申请可容纳 n 个指针变量的内存空间
	pT = (BTree *)malloc(sizeof(BTree)*n); 
	// 若数组中的某个元素不等于零,则申请相应的结点空间并进行赋值
	for (i=1; i <= n; i++) 
	{ 
		if (A[i] != 0) { 
			pT[i] = (BTree)malloc(sizeof(BTNode)); 
			pT[i]->data = A[i]; 
		} else { 
			pT[i] = NULL; 
		} 
	} 
	// 修改结点的指针域的内容,使父结点指向左、右孩子结点
	for (i=1; i <= n; i++) 
	{ 
		if (pT[i] != NULL) 
		{ 
			pT[i]->lchild = pT[2*i]; 
			pT[i]->rchild = pT[2*i+1]; 
		} 
	} 
}