【发布时间】:2015-05-01 00:27:42
【问题描述】:
我已经尝试在 C++ 中实现相同的功能。我想我几乎明白了。但是从链表访问节点时出现错误。
list<list<Node*> > Binary_Tree::level(Node* node)
{
list<Node*> current,parent;
list<list<Node*> > result;
list<Node*>::iterator itr;
if (node != NULL)
current.push_back(node);
while(current.size() > 0)
{
result.push_back(current);
parent = current;
current.clear();
itr = parent.begin();
while(itr != parent.end())
{
if(itr->left != NULL) // I am getting an error here.error: request for member ‘right’ in ‘* itr.std::_List_iterator<_Tp>::operator-><Node*>()’, which is of pointer type ‘Node*’ (maybe you meant to use ‘->’ ?
current.push_back(itr->left);
if(itr->right != NULL)
current.push_back(itr->right);
itr++;
}
}
返回结果; }
【问题讨论】:
-
即使这样也不行:if(*itr->left != NULL)
-
current和parent列表中的项目是Node*,而不是Node。除了您在此处显示的内容之外,对您的大部分代码一无所知,我相信您想要的语法是(*itr)->left和(*itr)->right,我高度建议您在评估 *itr 是否为 NULL >其中一个。 -
谢谢!!它现在正在工作。我也会记住你的建议。 :)
-
很高兴它有帮助。顺便说一句,每当您处理广度算法时,队列有时可能是一种直观的工具。 See example。祝你好运。
标签: c++ linked-list binary-tree levels