429 BFS遍历二叉树

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

例如,给定一个 3叉树 :

 

 

返回其层序遍历:

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

class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        List<List<Integer>> list = new ArrayList<List<Integer>>();
        if(root == null){
            return list;
        }
        Queue<Node> queue = new ArrayDeque<Node>();
        //宽度遍历
        queue.offer(root);
        while (!queue.isEmpty()){
            int size = queue.size();
            List<Integer> levelList = new ArrayList<Integer>();
            for (Node node : queue){
                levelList.add(node.val);
            }
            list.add(levelList);
            for (int i=0;i<size;i++){
                Node curNode = queue.poll();
                if (curNode.children != null){
                    for (Node offerNode : curNode.children){
                        queue.offer(offerNode);
                    }
                }
            }

        }
        return list;
    }
}

  

posted @ 2018-10-15 09:41  Bockpecehhe  阅读(223)  评论(0)    收藏  举报