/*
题目:N叉树的层序遍历 middle
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
*/
/*
思路:
经典的bfs,不再赘述
*/
package leetCode.BFS;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
public class lc_bfs_429_levelOrder {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> ans = new ArrayList<>();
if (root == null)
return ans;
ArrayDeque<Node> q = new ArrayDeque<>();
ArrayList<Integer> levelList = new ArrayList<>();
q.offer(root);
while (!q.isEmpty()) {
levelList = new ArrayList<>();
int size = q.size();
for (int i = 0; i < size; i++) {
Node node = q.poll();
levelList.add(node.val);
for (Node n : node.children) {
q.offer(n);
}
}
ans.add(levelList);
}
return ans;
}
class Node {
public int val;
public List<Node> children;
public Node() {
}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
}
}