BFS的答题模板
BFS,广度优先搜索
答题模板
(1)创建队列
(2)将头结点放入队列
(3)当队列不为空的时候进行遍历
Queue<T> queue=new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
T node = queue.poll();
for(...){
//将符合条件的节点加入队列中
}
}
层次遍历二叉树
题目描述:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
/*
典型的层次遍历的问题
*/
List<List<Integer> > lists=new ArrayList<>();
if(root==null){
return lists;
}
Queue<TreeNode> queue=new LinkedList<>();
queue.add(root);
int number=0;
while(!queue.isEmpty()){
number=queue.size();//记录当前层的数目
List<Integer> list=new ArrayList<>();
for(int i=0;i<number;i++){
TreeNode node=queue.poll();
list.add(node.val);
if(node.left!=null)
queue.add(node.left);
if(node.right!=null)
queue.add(node.right);
}
lists.add(list);
}
return lists;
}
}