#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什么的用太多了,内存使用过量。。。真不爽,就这么草草结束了。。
输入二叉树,求父,左,右结点和深度,叶子数
最新推荐文章于 2022-05-31 22:26:53 发布