#include <stdio.h>
#define MAX 30
/****-----------------------------------------*****/
//函数名: CreateTree(int btree[], int list[], int n)
//参数: (传入)int btree[] 二叉树
// (传入)int list[] 数据数组
// (传入)int n 数据数量
//功能: 建立二叉树
/****-----------------------------------------*****/
void CreateTree(int *bt, int list[], int n)
{
int i;
int level;
for(i = 0; i < MAX; i++) {
bt[i] = 0;
}
bt[0] = list[0]; //建立二叉树根结点
for(i = 1; i < n; i++) {
level = 1; //从第一层开始建立
while(bt[level] != 0) { //判断是否有子树存在
if(list[i] < bt[level]) //建立左子树
level = level*2;
else
level = level*2+1; //建立右子树
}
bt[level] = list[i];
}
}
/**********************测试主程序***************************/
int main()
{
int count, i;
int btree[MAX];
int nodelist[MAX];
printf("input the number of elements(n < 50):\n");
scanf("%d", &count);
printf("input elements:\n");
for(i = 0; i < count; i++) {
scanf("%d", &nodelist[i]);
}
CreateTree(btree, nodelist, count);
printf("the binary tree is:\n");
for(i = 0; i < MAX; i++) {
printf("%d ", btree[i]);
}
printf("\n");
return 0;
}
5.1数组存储二叉树实验
最新推荐文章于 2020-04-21 04:49:55 发布