1.题目
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6] 输出:[[1],[3,2,4],[5,6]]
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/n-ary-tree-level-order-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.代码
/*
// 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<List<Integer>>();
Queue<Node> queue = new LinkedList<>();
if(root==null) return result;
queue.offer(root);
while(!queue.isEmpty()){
List<Integer> list = new ArrayList<>();
int len = queue.size();
for(int i=0; i<len; i++){
Node node = queue.poll();
list.add(node.val);
List<Node> children = node.children;//记录抛出来的结点的孩子
if(children==null || children.size()==0){
continue;//跳过这一次循环
}
for(Node child:children){
if(child!=null){
queue.offer(child);//再把每一个孩子入队列
}
}
}
result.add(list);
}
return result;
}
}