给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
429. N叉树的层序遍历(BFS)1 - 图1
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:
树的深度不会超过 1000。
树的节点总数不会超过 5000。

法一:BFS

一层一层的加:

  1. // Definition for a Node.
  2. class Node {
  3. public int val;
  4. public List<Node> children;
  5. public Node() {}
  6. public Node(int _val) {
  7. val = _val;
  8. }
  9. public Node(int _val, List<Node> _children) {
  10. val = _val;
  11. children = _children;
  12. }
  13. }
  14. // This code is a modified version of the code posted by
  15. // #zzzliu on the discussion forums.
  16. class Solution {
  17. public List<List<Integer>> levelOrder(Node root) {
  18. List<List<Integer>> result = new ArrayList<>();
  19. if (root == null) return result;
  20. Queue<Node> queue = new LinkedList<>();
  21. queue.add(root);
  22. while (!queue.isEmpty()) {
  23. List<Integer> level = new ArrayList<>();
  24. int size = queue.size();
  25. for (int i = 0; i < size; i++) {
  26. Node node = queue.poll();
  27. level.add(node.val);
  28. queue.addAll(node.children);
  29. }
  30. result.add(level);
  31. }
  32. return result;
  33. }
  34. }

429. N叉树的层序遍历(BFS)1 - 图2