[二叉树] 满二叉树建立方式

Tree *Create() {
	int i, j;
	Tree *t, *p, *s[50];
	// 以 0 为结束标记;if (i == 0)若输入 0 就结束输入数据循环;
	while (1) {
		cin >> i;
		if (i == 0)
			break;
		else {
			p = new Tree();
	// 新建一个空间使左右结点都置为空;输入其新结点的数据;新结点 p 给指针变量s[i]数组;
			p->lchild = p->rchild = NULL;
			cin >> p->data;
			s[i] = p;
			if (i == 1)
	// 若 i == 1 说明为根结点;t为返回的根指针;所以 t 指向 p;
				t = p;
			else {
	// 若 i 不为根结点序号 j = i/2;s[j]为其双亲结点的序号(二叉树的性质里有介绍);
				j = i/2;
	// 若 i%2 == 0 说明当前结点为 i 的序号为双亲结点的左结点;所以双亲结点s[j] 指向的左结点指向 p;;要不就为右结点;
				if (i%2 == 0)
					s[j]->lchild = p;
				else
					s[j]->rchild = p;
			}
		}
	}
	// 返回根指针;
	return t;
}

int main() {
	Tree *t;
	t = Create();
	return 0;
}

 操作内容是先输入序号数字1,在输入字符串,在输入数字2, 在输入字符串,在输入数字3,在输入字符串,直到输入数字 0 为结束标记,然后通过构造函数用后根遍历的方法输出结果;

 

    原文作者:满二叉树
    原文地址: https://blog.csdn.net/liujian_sc/article/details/9210459
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞