题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Collections; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); if (pRoot == null) { return res; } Queue<TreeNode> queue = new LinkedList<>(); boolean flag = true; queue.add(pRoot); while (!queue.isEmpty()) { Queue<TreeNode> temp = new LinkedList<>(); ArrayList<Integer> arrayList = new ArrayList<>(); while (!queue.isEmpty()) { arrayList.add(queue.peek().val); if (queue.peek().left != null) { temp.add(queue.peek().left); } if (queue.peek().right != null) { temp.add(queue.peek().right); } queue.poll(); } if (!flag) { Collections.reverse(arrayList); } flag = !flag; while (!temp.isEmpty()) { queue.add(temp.poll()); } res.add(arrayList); } return res; } }