一、题目内容

image.png

二、题解

解法1:

思路

增加level 判断层
每层用deque,正序尾插,逆序头插

代码

  1. public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
  2. ArrayList<ArrayList<Integer>> ans = new ArrayList<>();
  3. if (pRoot == null) {
  4. return ans;
  5. }
  6. int level = 0;
  7. Queue<TreeNode> queue = new LinkedList<>();
  8. queue.add(pRoot);
  9. while (!queue.isEmpty()) {
  10. int size = queue.size();
  11. Deque<Integer> tempAns = new LinkedList<>();
  12. for (int i = 0; i < size; i++) {
  13. TreeNode node = queue.poll();
  14. if (level % 2 == 0) {
  15. tempAns.add(node.val);
  16. } else {
  17. tempAns.addFirst(node.val);
  18. }
  19. if (node.left != null) {
  20. queue.offer(node.left);
  21. }
  22. if (node.right != null) {
  23. queue.offer(node.right);
  24. }
  25. }
  26. level++;
  27. ans.add(new ArrayList<Integer>(tempAns));
  28. }
  29. return ans;
  30. }