二叉树的概念就不和大家说了,相信大家都知道。直接上代码了!
(1)普通数组
#include<stdio.h> void create_btree( int *btree,int *data ,int len) { int level ,i ; btree[1] = data [1]; for( i = 2;i <= len ; i++) { level = 1; while( btree[ level] != 0) { if( data[i] > btree[level]) level = level *2 +1; else level = level *2; } btree[level] = data[i]; } } int main() { int btree[16]; int data[10] ={0,5,6,4,8,2,3,7,1,9}; int i; for( i =1; i<16; i++) btree[i] = 0; create_btree( btree,data ,9); for( i = 1; i < 16 ; i++ ) printf("%2d: [%d]\n",i,btree[i]); return 0 ; }
(2)结构体数组
#include<stdio.h> #include<stdlib.h> struct tree { int data; int left; int right; }; typedef struct tree treenode; treenode btree[15]; void create_btree( int *data ,int len) { int level ,i ,pos; btree[0].data= data[0]; for( i = 1;i < len ; i++) { btree[i].data = data[i]; level = 0; pos = 0 ; while( pos != 0 ) { if( data[i] > btree[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; printf("len = %d\n",len); } } 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; } create_btree(data ,9); printf("左 数据 右 \n"); printf("-------------- \n"); for( i = 0; i < 15; i++ ) { if( btree[i].data != 0) printf("%2d:[%2d] [%2d] [%2d]\n",i,btree[i].left,btree[i].data,btree[i].right); } return 0 ; }
链表的几种实现方式(1)数组法,布布扣,bubuko.com
原文:http://blog.csdn.net/liuzuyi200/article/details/24232453