各位大大幫我看一下程式...
/* 用陣列建立二元樹 */
#include
#include struct tree /*宣告數的結構*/
{
int left; /*存放左子樹位置*/
int data; /*存放資料*/
int right; /*存放右子樹*/
}; typedef struct tree treenode; /*宣告樹的節點*/
treenode b_tree[15]; /*宣告二元樹陣列個數*/ /* 建立二元樹 */ void create_btree(int *b_tree, int *nodelist, int len)
{
int i;
int level; /*樹的階層*/
int position; b_tree[0].data=nodelist[0]; /*根節點*/ for(i=1; i b_tree[level].data) /*判斷左子樹或右子樹*/
if(b_tree[level].right !=-1) /*右樹是否有下一層*/
level=b_tree[level].right;
else
position=-1; /*設定為右樹*/
else
if(b_tree[level].left !=-1) /*左樹是否有下一層*/
level=b_tree[level].left;
else
position=1; /*設定為左樹*/
}
if(position==1) /*建立節點的左右連結*/
b_tree[level].left=i; /*連結左子樹*/
else
b_tree[level].right=i; /*連結右子樹*/
}
} void main()
{
int i, index;
int data; /*讀入輸入值所使用的暫存變數*/
int nodelist[16]; /*宣告儲存輸入資料陣列*/
printf("\n Please input the elements of binary tree(Exit for 0): \n");
index=1; /*-------------讀取數值存到陣列中---------------*/
scanf("%d", &data); /*讀取輸入值存到變數data*/
while(data !=0)
{
nodelist[index]=data;
index=index 1;
scanf("%d",&data);
}
/*----------------------清除陣列的內容--------------*/
for(i=0; i<15; i )
{
b_tree[i].data=0;
b_tree[i].left=-1;
b_tree[i].right=-1;
} /*---------------------建立二元樹-------------------*/
create_btree(nodelist, index); /*---------------------印出二元樹內容---------------*/
printf("\n The binary tree content: \n");
printf(" left data rignt \n");
printf("========================================\n");
for(i=1; i<15; i )
printf("-: [-] [-] [-] \n" ,i, b_tree[i], left, b_ree[i].data, b_tree[i].right);
}