Given a binary tree build a vertical sum array

0

void verticalSum(node* node,map<int,int>& m,int col){
if(node==NULL)
return;
map<int,int>::iterator it=m.find(col);
//finds the position of (key,value) pair or the end pointer if no such pair is found
if(it==m.end())
m.insert(pair<int,int>(col,node->data));
else
it->second+=node->data;
verticalSum(node->left,m,col-1);
verticalSum(node->right,m,col+1);
}

int main(){

 map<int,int> m;

map<int,int>::iterator iter;
cout<<“\nvertical sum “;
verticalSum(root,m,0);
for(iter=m.begin();iter!=m.end();iter++){
cout<<iter->second<<” “;
}

}