剑指 Offer 32 - II. 从上到下打印二叉树 II

image.png
剑指 Offer 32 - II. 从上到下打印二叉树 II - 图2

图片转自 https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/5v22om/

层序遍历

  1. public class Solution {
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. // 使用队列存放节点
  4. Queue<TreeNode> queue = new LinkedList<>();
  5. // 存放每一层的遍历结果
  6. List<List<Integer>> resList = new ArrayList<>();
  7. // 初使化
  8. if (root != null) queue.add(root);
  9. // 如果队列不为空
  10. while (!queue.isEmpty()) {
  11. // 存放当前层的遍历结果
  12. List<Integer> tempList = new ArrayList<>();
  13. resList.add(tempList);
  14. // 当前层打印循环,即长度等于队列长度,注意 i 是从大小到
  15. for (int i = queue.size() - 1; i >= 0; i --) {
  16. // 拿出队首
  17. TreeNode node = queue.poll();
  18. // 将队首的值放入结果集
  19. tempList.add(node.val);
  20. // 将队首的左右节点分别入队
  21. if (node.left != null) queue.add(node.left);
  22. if (node.right != null) queue.add(node.right);
  23. }
  24. }
  25. return resList;
  26. }
  27. }