#include <stdio.h>
#include <math.h>
#define MAX_TREE_SIZE 15
void main()
{
int SqBiTree[MAX_TREE_SIZE+1];之前的錯誤就在這,導致溢出了。。我的數組下標爲了方便,是從1開始的。。感謝林大神!
int i,a,m,s;
double n;
for(i=1;i<=MAX_TREE_SIZE;i++)
scanf("%d",&SqBiTree[i]);
for(i=1;i<=MAX_TREE_SIZE;i++)
printf("%d ",SqBiTree[i]);
s=0;
for(i=1;i<=MAX_TREE_SIZE;i++)
if(SqBiTree[i]==0)
s++;
n=MAX_TREE_SIZE-s;
printf("\n");
m=0;
for(i=1;i<=MAX_TREE_SIZE;i++)
if(2*SqBiTree[i]>n && 2*SqBiTree[i]+1>n)
m++;
printf("葉子結點爲%d\n",m);
printf("深度爲%.0lf\n",log(n)/log(2));
scanf("%d",&a);
if(SqBiTree[a]==0)
printf("父結點,左右孩子結點不存在!\n");
if(a==1)
printf("無雙親!\n");
if(a>1)
printf("父結點爲%d\n",SqBiTree[a/2]);
if(2*a>n)
printf("無左孩子!\n");
else
printf("左孩子爲%d\n",SqBiTree[2*a]);
if(2*a+1>n)
printf("無右孩子!\n");
else
printf("右孩子爲%d\n",SqBiTree[2*a+1]);
}
代碼沒有寫好,出現了程序停止運行,但我改不出來,這次是我自己寫的,估計是if什麼的用太多了,內存使用過量。。。真不爽,就這麼草草結束了。。
輸入二叉樹,求父,左,右結點和深度,葉子數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.