/*复杂的编程,思考永远是最重要的*/
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int b_tree[20]={0};
//int count=0;//因为count不能由开始输入的数据个数直接看出来 ,故我直接用全局 变量方便随时使用
//这段程序我借鉴了链表建立二叉树的方法,值得仔细推敲
void creat_Tree( int *nodelist , int *b_tree ,int n )
{
int i;
int j;//遍历层数
for(i=1;i<=n;i++)
{
j=1;
while( b_tree[j]!= 0 )
{
if(b_tree[j]>nodelist[i])
j=2*j;
else
j=2*j+1;
}
b_tree[j]=nodelist[i];
count=j;//二叉树结构中有效元素的个数,即index -1;
}
}
void print_Tree()//按照二叉树的形式输出数据
{
int i,j,m;
m=log(1+count)/log(2);//确定层数
for(j=1;j<=m;j++)
{
i=(int)pow(2,j-1);//每一层开始的数据下标
while( i<=(int)pow(2,j)-1 )
{
if(b_tree[i]!=0)
printf("[%d] " ,b_tree[i]);
else
printf(" ");
i++;
}
printf("\n");
}
}
int main(){
int value;
int nodelist[20];
int index=1;//输入数据的个数+1
printf("please input some datas to array nodelist:\n");
scanf("%d",&value);
while( value != 0 )
{
nodelist[index]=value;
index++;
scanf("%d",&value);
}
//有效下标为1 to index-1;
creat_Tree( nodelist ,b_tree ,index-1 );
printf("bintree is :\n");
print_Tree();
system("pause");
return 0;
}
二叉树用数组表示
最新推荐文章于 2024-07-24 11:55:42 发布