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;
}