二叉树数组实现

时间:2020-07-13 09:16:43   收藏:0   阅读:69
 1 #include <stdio.h>
 2 
 3 void createbtree(int *btree,int *data,int len)
 4 {
 5     int level;                              //树的层数
 6     int i;
 7     
 8     btree[1] = data[1];                     //创建根节点
 9     for( i = 2; i <= len; i++)              //用循环创建其他节点
10     {
11         level = 1;                          //从层数1开始
12         while ( btree[level] != 0)          //是否有子树
13         {                       
14             if (data[i] > btree[level])     //是左或右子树
15                 level = level * 2 + 1;      //右子树
16             else
17                 level = level * 2;          //左子树
18         }
19         btree[level] = data[i];             //存入节点数据
20     }
21 }
22 
23 
24 
25 int main()
26 {
27     int btree[16];
28     
29     int data[10] = {0,5,6,4,8,2,3,7,1,9};
30     int i;
31     
32     for( i = 1; i < 16; i++ )
33         btree[i] = 0;
34     createbtree(btree,data,9);
35     for(i = 1; i< 16; i++)
36     printf("%2d: [%d] \n",i,btree[i]);
37     
38 
39     return 0;
40 }

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!