为了对通用树进行级别顺序(BFS)遍历,我为下面链接中提到的代码编写了以下显示函数。问题是每个级别都打印了两次。谁能告诉我为什么。如果有人需要整个实现,可以在下面的链接中找到没有此功能的原始代码,否则只需查看下面的 displayBFS 函数并告诉我为什么值重复
谢谢!
void displayBFS(NaryTreeNode n)
{
Queue<NaryTreeNode> q = new LinkedList<NaryTreeNode>();
if(n!=null)
{
q.add(n);
System.out.println(n.data);
}
while(n!=null)
{
for(NaryTreeNode x:n.nary_list)
{
q.add(x);
System.out.println(x.data );
}
n = q.poll();
}
}
当前树结构供参考:
root(100)
/ | \
90 50 70
/ \
20 30 200 300
输出:100 90 50 70 90 50 70 20 30 200 300 20 30
200
300