1、题目描述
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
2、算法分析
这个也是和二叉树的层次遍历一样。只是这是个N叉树的遍历。
3、代码实现
/*
// Definition for a Node.
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;
}
};
*/
class Solution {
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> result = new ArrayList<>();
if(root == null){
return result;
}
// 定义一个队列
Queue<Node> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
List<Integer> list = new ArrayList<>();
int size = queue.size();
// 遍历每一层
for(int i = 0;i < size;i++){
Node node = queue.poll();
list.add(node.val);
// 遍历结点的孩子结点
List<Node> child = node.children;
if(child == null || child.size() == 0){
continue;
}
// 将孩子添加到队列中
for(Node n:child){
if(n != null){
queue.offer(n);
}
}
}
result.add(list);
}
return result;
}
}