剑指offer 32 - III. 从上到下打印二叉树 III 题目描述 解题思路 class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new LinkedList<>(); Queue<TreeNode> queue = new LinkedList<>(); if (root != null) queue.offer(root); int level = 1; //记录当前层,从第一层开始 while (!queue.isEmpty()) { //保存当前层的节点 LinkedList<Integer> temp = new LinkedList<>(); int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode currNode = queue.poll(); //奇数层则插入到尾部,偶数层插入到首部 if ((level & 0x01) == 1) { temp.addLast(currNode.val); } else { temp.addFirst(currNode.val); } //左右孩子入队 if (currNode.left != null) queue.offer(currNode.left); if (currNode.right != null) queue.offer(currNode.right); } level++; //层数加1 res.add(temp); } return res; } }