ok so i have a binary tree(not a search one)

i declared it using an array like this


a[7]=0 1 2 3 4 5 6//lets say

1 2 3 4 5 6 7

node 0 is the root and has the key 1
and i constructed the array like this [2*i+1]=left node key and [2*i+2]=right node key

the question is

i need to make an algorithm,exactly an bfs , over an height...lets say if i have
1 2 3 4 5 6 7 array and i want to make the sum of nodes with height 2
it will return me 4 5 6 7


its not hard but my theacher want to implement recursive and i kinda suck at recursive implementation


this is the code i've tried to implement...

Code:
#include "iostream"
#define MAX 1000
#define sent 777
using namespace std;
int arb[MAX];
void calculation(int h,int lvl,int y);

int main()
{	
	int i=0,k=0,h,lvl=0,y=1;
	cout<<"give the root a value ";
	cin>>arb[0];
	cout<<"give root brother a value ";
	cin>>arb[2*i+1]>>arb[2*i+2];
	for(i=1;i<MAX;i++)
	{
		cout<<"give value to the brothers of "<<arb[i]<<" ";
		cin>>arb[2*i+1]>>arb[2*i+2];
		cout<<"you want to introduce another node  ?0 yes 1 no";
		cin>>k;
		if(k==1) 
			break;
	}
	k=2*i+2;
	

	for(i=0;i<=k;i++)
		cout<<arb[i]<<" ";
	cout<<"introduce the height for calculation ";
	cin>>h;

	for(int j=1;j<h;j++)
	{
		lvl=2*lvl+1;
		j++;
	}

	calculat(h,lvl,y);
	return 0;

}
void calculation(int h,int lvl,int y)
{
int k=2;
cout<<arb[2*lvl+1]<<arb[2*lvl+2];


if(y<k)
{	
	y++;
	lvl++;
	calculat(h,lvl,y);
}
else
	return;

	
}