- 论坛徽章:
- 0
|
本帖最后由 oscar16 于 2011-06-25 20:42 编辑
已知一颗具有n个结点滴完全二叉树被顺序存储于一维数组a[1]-a[n]元素中,试编写一个算法输出a结点的双亲和孩子。
#include <stdio.h>
#include <iostream>
#define MAX 50
void main()
{
int a[MAX],n,i;
printf(" 请输入二叉树的结点个数:");
scanf("%d",&n);
//input(a,n);
printf("请输入i:");
scanf("%d",&i);
parent(a,n,i);
child(a,n,i);
}
void parent(int a[],int n,int i)
{
if(i==1)
{
printf("无双亲 \n");
return;
}
else
printf("双亲:%d\n",a[(i-1)/2]);
}
void child(int a[],int n,int i)
{
int queue[MAX],front=0,tail=0,p;
queue[0]=i;tail++;
while(front<tail)
{
p=queue[front++];
if(p!=i)
printf("%d ",a[p-1]);
if(2*p<=n)
queue[tail++]=2*p;
if(2*p+1<=n) queue[tail++]=2*p+1;
}
}
求高手看下 哪里出错了? |
|