輸入二叉樹,求父,左,右結點和深度,葉子數

#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什麼的用太多了,內存使用過量。。。真不爽,就這麼草草結束了。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章