- #include<stdio.h>
- void create_btree(int *b_tree,int *nodelist,int len)
- {
- int i=0;
- int level;
- b_tree[1]=nodelist[1];
- for(i=2;i<len;i++)
- {
- level=1;
- while(b_tree[level]!=0)
- {
- if(nodelist[i]<b_tree[level])
- level=level*2;
- else
- level=level*2+1;
- }
- b_tree[level]=nodelist[i];
- }
- }
- void main()
- {
- int i;
- int index=1;
- int data;
- int b_tree[16];
- int nodelist[16];
- printf("please input the binary tree(exit for 0)");
- scanf("%d",&data);
- while(data!=0)
- {
- nodelist[index]=data;
- index++;
- scanf("%d",&data);
- }
- //清除二叉树组的内容
- for(i=0;i<16;i++)
- {
- b_tree[i]=0;
- }
- //创建二叉树
- create_btree(b_tree,nodelist,index);
- //输出二叉树
- printf("\n the binary tree is :\n");
- for(i=1;i<16;i++)
- {
- printf("%2d:[%d] \n",i,b_tree[i]);
- }
- }
用这种数组来保存二叉树,会形成大量的浪费,数组的序号是按满二叉树排的node