您的位置:首页 > 其它

用数组模仿树结构

2006-09-15 10:56 197 查看
/**
* 用数组模仿树结构,原则是左小右大
* treeArr.c
* version:1.0 2006-9-15
* writeby jsp
*/

#include "stdio.h"

void creat(int *nodlist , int *b_tree , int len)
{
int lay,i;//lay 层

b_tree[1] = nodlist[1];

for(i = 2; i < len; i++)
{
lay = 1;
while( b_tree[lay] != 0)//用于判断b_tree[lay]这个节点是否为空如果为空就把nodlist[i]付给它;
{
if(nodlist[i] > b_tree[lay])//判断是左子树还是右子树.如果b_tree[lay]不为空则找b_tree[lay]的子节点
lay = 2 *lay+1;//下个右叶节点
else
lay = 2 *lay;//下个左叶节点
}
b_tree[lay] = nodlist[i];
}
}

void main()
{
int i,index; //index用于存放输入数组的索引号,i循环变量
int data;
int nodlist[16];//输入数组
int b_tree[16];//树结构

index = 0;

for(i = 0 ; i < 16; i++)
{
nodlist[i]=0;
}

do
{
index+=1;
scanf("%d",&data);
nodlist[index] = data;
}while(data != 0);

for(i = 1; i < 16; i++)
{
b_tree[i] = 0;
}

creat(nodlist , b_tree , index);

for(i = 1; i < 16; i++)
{
printf("[%d]:%d/n",i,b_tree[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: