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;
}
}