数据结构与算法 ~ 树和二叉树 ~ 使用数组存储二叉树
/* binary trees--sequence storage express */
#include<stdlib.h>
#include<stdio.h>
#define MAX 100
int length=1;
void create_bitree(int bitree[]){
int flag,i,e;
for(i=1;i<MAX;++i) bitree[i]=0; /*数组初始化*/
printf("\n=======create the bitree============\n");
while(1){
printf("\nplease input the data(exit for 0):");
scanf("%d",&e);
if (e==0) break;
flag=1;
/*寻找插入位置*/
while (e!=0&&bitree[flag]!=0){
if (bitree[flag]>e) flag=flag*2;
else flag=flag*2+1;
}/*while*/
bitree[flag]=e; /*插入*/
if (flag>length) length=flag;
}/*while*/
}/*create_bitree*/
void Print(int bitree[]){
int i=1;
printf("\n=======the current bitree============\n");
for (i=1;i<=length;++i)
printf("\nbitree[%d]=%d",i,bitree[i]);
printf("\nthe length of bitree is %d",length);
printf("\n=======over============\n");
}
int main(){
int i ,data;
int bitree[MAX];
create_bitree(bitree);
Print(bitree);
system("pause");
return 0;
}
运行结果:
=======create the bitree============
please input the data(exit for 0):54
please input the data(exit for 0):42
please input the data(exit for 0):11
please input the data(exit for 0):98
please input the data(exit for 0):65
please input the data(exit for 0):44
please input the data(exit for 0):55
please input the data(exit for 0):77
please input the data(exit for 0):1
please input the data(exit for 0):0
=======the current bitree============
bitree[1]=54
bitree[2]=42
bitree[3]=98
bitree[4]=11
bitree[5]=44
bitree[6]=65
bitree[7]=0
bitree[8]=1
bitree[9]=0
bitree[10]=0
bitree[11]=0
bitree[12]=55
bitree[13]=77
the length of bitree is 13
=======over============
请按任意键继续. . .