题目

image.png

解题思路

1、BFS / 双端队列

image.png

实现

1、BFS / 双端队列

  1. class Solution {
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. Queue<TreeNode> queue = new LinkedList<>();
  4. List<List<Integer>> res = new ArrayList<>();
  5. if (root != null) {
  6. queue.add(root);
  7. }
  8. while (!queue.isEmpty()) {
  9. LinkedList<Integer> tmp = new LinkedList<>();
  10. for (int i = queue.size(); i > 0; i--) {
  11. TreeNode node = queue.poll();
  12. if (res.size() % 2 == 0) {
  13. // 偶数层 -> 队列头部
  14. tmp.addLast(node.val);
  15. } else {
  16. // 奇数层 -> 队列尾部
  17. tmp.addFirst(node.val);
  18. }
  19. if (node.left != null) {
  20. queue.add(node.left);
  21. }
  22. if (node.right != null) {
  23. queue.add(node.right);
  24. }
  25. }
  26. res.add(tmp);
  27. }
  28. return res;
  29. }
  30. }

image.png