一、题目内容

image.png

二、题解

解法1:

思路

临时数组使用队列,正序尾插,逆序头插入

代码

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public List<List<Integer>> levelOrder(TreeNode root) {
  12. if (root == null) {
  13. return new ArrayList<List<Integer>>();
  14. }
  15. Queue<TreeNode> queue = new LinkedList<TreeNode>();
  16. List<List<Integer>> result = new ArrayList<List<Integer>>();
  17. queue.offer(root);
  18. int level = 0;
  19. while (!queue.isEmpty()) {
  20. LinkedList<Integer> temp = new LinkedList<Integer>();
  21. int size = queue.size();
  22. for (int i = 0; i < size; i++) {
  23. TreeNode head = queue.poll();
  24. if (level % 2 == 0) {
  25. temp.add(head.val);
  26. } else {
  27. temp.addFirst(head.val);
  28. }
  29. if (head.left != null) {
  30. queue.offer(head.left);
  31. }
  32. if (head.right != null) {
  33. queue.offer(head.right);
  34. }
  35. }
  36. result.add(temp);
  37. level++;
  38. }
  39. return result;
  40. }
  41. }