429.N叉数的层序遍历
- 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;
}