1 题目描述
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。429.N叉树的层序遍历
2 解题思路
二叉树层序遍历的拓展,解题思路基本一致。
- 若root节点非null,则将root加入到队列que中。
- 进入条件为que非空的循环,记录此时que的大小len用于分层的标记,创建tempList保存每一层的节点值。不满足条件则跳转步骤5。
- 进入内部第二层循环,弹出que队首节点node,并将值添加至tempList,然后将node的所有节点添加至que中。
- 结束内层循环,将tempList添加至目标列表result中。跳转步骤2。
- 返回最终结果result
3 流程图
4 代码
public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> res = new ArrayList<>();
if(root == null) return res;
Queue<Node> que = new LinkedList<>();
que.offer(root);
while(!que.isEmpty()){
List<Integer> tempList = new ArrayList<>();
int len=que.size();
while(len>0){
Node node = que.poll();
tempList.add(node.val);
for(Node nd : node.children){
que.offer(nd);
}
len--;
}
res.add(tempList);
}
return res;
}