BFS:使用递归或队列


之前一般遇到题目考虑使用图遍历的时候,基本上来就深度优先的递归调用,但是忘记了还有BFS方式

二叉树的按层遍历属于啥呢,就属于广度优先,使用了啥呢,使用了队列
所以可以把当前遍历到的节点的所有下一跳都存到队列里,然后队列的头肯定是这个节点都同级节点,弹出来继续遍历就行了

Queue queue=new LinkedList()<>;
queue.add(p);
while(!queue.isEmpty(){
	Node p=queue.poll();
	visit(p);
	while(p.hasnext){
		queue.add(p.next);//存入p的所有未访问过的邻居
	}
}