代码改变世界

二叉树数组表示法

2010-11-21 21:53  迪奥  阅读(641)  评论(1编辑  收藏  举报

二叉树数组表示法

struct tree

{

int data;

int left;

int right;

};

typedef struct tree treenode;

treenode btree[N];

用数组表示二叉树

 

struct tree //二叉树结构声明

{

int data;

int left;

int right;

};

typedef struct tree treenode;

treenode btree[15];

/*----创建二叉树---*/

void createbtree( int *data,int len)

{ int level;

int pos; //-1为左树,1是右树;

int i;

btree[0].data=data[0]; //创建树根结点

for(i=1;ibtree[level].data)

/*---右树是否有下一层数---*/

if(btree[level].right!=-1)

level=btree[level].right;

else pos=-1; //右树

else if(btree[level].left!=-1)

level=btree[level].left;

else pos=1; //左树

} if(pos==1) /*------创建结点左右位置------*/

btree[level].left=i; //连接左子树

else btree[level].right=i; //连接右子树

}

}

/*------------创建结构数组的二叉树状结构-----------*/ /* -1 表示没有下一层数*/

int main()

{

int data[10]={5,6,4,8,2,3,7,1,9};

int i;

for(i=0;i<15;i++) //初始化

{

btree[i].data=0;

btree[i].left=-1;

btree[i].right=-1;

}

createbtree(data,9);

printf(" 左 数据 右\n");

printf("-----------------\n");

for(i=0;i<15;i++)

if(btree[i].data!=0)

if(btree[i].data!=0)

printf("%2d:[%2d] [%2d] [%2d]\n",i,btree[i],left, btree[i].data,btree[i].right);

}