题目

image.png

解题思路

1、BFS 广度优先搜索

BFS 通常借助 队列 的先入先出特性来实现。

32 - I. 从上到下打印二叉树 - 图2

image.png
image.png

实现

1、BFS 广度优先搜索

  1. class Solution {
  2. public int[] levelOrder(TreeNode root) {
  3. if (root == null) {
  4. return new int[0];
  5. }
  6. // 记录顺序
  7. ArrayList<Integer> answer = new ArrayList<>();
  8. // 借助队列实现BFS
  9. Queue<TreeNode> queue = new LinkedList<>();
  10. queue.add(root);
  11. while (!queue.isEmpty()) {
  12. // poll 将队首从队列中弹出,如果队列是空的,就返回null
  13. TreeNode node = queue.poll();
  14. answer.add(node.val);
  15. if (node.left != null) {
  16. queue.add(node.left);
  17. }
  18. if (node.right != null) {
  19. queue.add(node.right);
  20. }
  21. }
  22. // 生成 int 数组
  23. int[] result = new int[answer.size()];
  24. for (int i = 0; i < answer.size(); i++) {
  25. result[i] = answer.get(i);
  26. }
  27. return result;
  28. }
  29. }

image.png