Leetcode刷题java之429. N叉树的层序遍历

执行结果:

通过

显示详情

执行用时 :8 ms, 在所有 Java 提交中击败了45.71% 的用户

内存消耗 :58.7 MB, 在所有 Java 提交中击败了41.12%的用户

题目:

给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

思路:

利用队列和当前队列大小来实现每一层的层次遍历,要灵活运用continue,跳过本次循环

代码:

/*
// Definition for a Node.
class Node {
    public int val;
    public List children;

    public Node() {}

    public Node(int _val,List _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
    public List> levelOrder(Node root) {
        List> result=new ArrayList<>();
        Queue queue=new LinkedList<>();
        queue.add(root);
        //每一次循环就是一层
        while(queue.size()>0)
        {
            List temp=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;
    }
}

 

你可能感兴趣的:(java,Leecode,二叉树,层次遍历)