为什么我在二叉树的对角线遍历代码中出现 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,我可以说这是一个愚蠢的错误。
我在这段代码中收到 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,我可以说这是一个愚蠢的错误。