public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { return levelorder(pRoot); public static ArrayList<ArrayList<Integer>> levelorder(TreeNode root) { Queue <TreeNode> queue = new LinkedList<> (); ArrayList <ArrayList<Integer>> result = new ArrayList<> (); if (root == null ) return result; queue.offer(root); // 首先将根节点root入队 int level = 0; // 记录层数 while (!queue.isEmpty()) { // Queue不为空则循环 LinkedList<Integer> node = new LinkedList<>(); // 保存每一层节点的值 int length = queue.size(); // 每一层的节点数目 while (length > 0 ) { TreeNode tree = queue.poll(); if (tree.left != null ) { queue.offer(tree.left); if (tree.right != null ) { queue.offer(tree.right); if ((level+1)%2==0 ){ node.addFirst(tree.val); } else { node.add(tree.val); length -- ; // node为本层遍历结果 // 将linkedlist转成 ArrayList ArrayList<Integer> arrayNode = new ArrayList<> (); for (Integer i: node) { arrayNode.add(i); result.add(arrayNode); // 循环结束后,得到的Queue为下一层做准备, level++ ; return result;