为什么我在二叉树的对角线遍历代码中出现 SIGBART 错误?

Why I am getting SIGBART error in this code of diagonal traversal of Binary tree?

我在这段代码中收到 SIGBART 错误。我正在尝试打印二叉树的对角线遍历。

void digonalUtil(Node* root,int dVal,map<int,vector<int> > &mp){
    if(root==NULL) return;
    
    mp[dVal].push_back(root->data);
    
    digonalUtil(root->left,dVal+1,mp);
    digonalUtil(root->right,dVal,mp);
}

vector<int> diagonal(Node *root)
{
   // your code here
   vector<int> ans;
   if(root==NULL) return ans;
   
   map<int,vector<int> > mp;
   digonalUtil(root,0,mp);
   
   for(auto itr=mp.begin();itr!=mp.end();itr++){
       for(auto ptr=itr->second.begin();ptr!=itr->second.end();itr++){
           ans.push_back(*ptr);
       }
   }
   return ans;
   
}

在对语句进行一些注释时,我发现错误在行

mp[dVal].push_back(root->data);

但我不明白为什么会这样。我早些时候在其他问题中对地图进行了相同的操作,在那里工作正常。

请帮忙。

我得到了答案,在第二个 for 循环中我增加了 itr 而不是导致错误的 ptr,我可以说这是一个愚蠢的错误。