执行结果:
通过
显示详情
执行用时 :8 ms, 在所有 Java 提交中击败了45.71% 的用户
内存消耗 :58.7 MB, 在所有 Java 提交中击败了41.12%的用户
题目:
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
思路:
利用队列和当前队列大小来实现每一层的层次遍历,要灵活运用continue,跳过本次循环
代码:
/*
// Definition for a Node.
class Node {
public int val;
public Listchildren;
public Node() {}
public Node(int _val,List_children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public List> levelOrder(Node root) {
List> result=new ArrayList<>();
Queuequeue=new LinkedList<>();
queue.add(root);
//每一次循环就是一层
while(queue.size()>0)
{
Listtemp=new ArrayList<>();
//获取这一层队列的大小
int count=queue.size();
//将这一行队列循环完
while(count-->0)
{
Node node=queue.poll();
//如果当前节点为空,就跳过本次循环
if(node==null)
{
continue;
}
//将此结点加入
temp.add(node.val);
//再将下面的加入队列
for(Node n:node.children)
{
queue.add(n);
}
}
//这个地方最开始的时候没有发现这个问题
//如果不加这个判断会出现问题,输入[],预期[],但是输出确实[[]]
//所以要加这个循环
if(temp.size()>0)
{
result.add(temp);
}
}
return result;
}
}