N叉树层序遍历
child.forEach(m->{
Set<Set<ShopVO>> lists levelOrder(m);
});
// 利用set去重
public Set<Set<ShopVO>> levelOrder(ShopVO root){
Set<Set<ShopVO>> result = new HashSet<>();
if( root == null){
return result;
}
Queue<ShopVO> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
Set<ShopVO> list = new HashSet<>();
int size = queue.size();
for (int i = 0; i < size; i++) {
ShopVO node = queue.poll();
list.add(node);
//用集合是可能有多个子节点
assert node != null;
List<ShopRefereeVO> children = node.getChild();
//子为空或者大小为0,退出循环
if (children == null || children.size() == 0) {
continue;
}
//对子节点进行遍历
for (ShopVO child : children) {
//插入队列
if (child != null) {
queue.offer(child);
}
}
}
result.add(list);
}
return result;
}