【每日一题-leetcode】429.N叉数的层序遍历

429.N叉数的层序遍历

  1. N叉树的层序遍历

难度中等76

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

例如,给定一个 3叉树 :

返回其层序遍历:

[
     [1],
     [3,2,4],
     [5,6]
]

1.队列实现广度优先搜索

time:O(n)

space:O(n)

//1.用队列实现广度优先搜索
    //2.一个list 一个queue  list存储节点的值  queue存储每一层遍历的节点。
    //3.当queue != null 的时候,遍历当前层。
    public List<List<Integer>> levelOrder(Node root) {
        if(root == null) return new ArrayList();
        List<List<Integer>> list = new ArrayList<>();
        Queue<Node> queue = new LinkedList();//存储每一层的结点值
        queue.add(root);
        while(!queue.isEmpty()){
            List<Integer> level = new ArrayList<>();
            int size = queue.size();
            for(int i=0;i<size;i++){
                Node node = queue.poll();
                level.add(node.val);
                queue.addAll(node.children);
            }
            list.add(level);
        }
        return list;
    }
posted @ 2020-04-08 15:30  qxlxi  阅读(81)  评论(0编辑  收藏  举报