- #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