剑指 Offer 32 - II. 从上到下打印二叉树 II
题目链接:
剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣(LeetCode) (leetcode-cn.com)
注意点:巧妙运用队列的size值来实现按层次遍历
代码及解析:
1 public List<List<Integer>> levelOrder(TreeNode root) { 2 if (root == null) { 3 return null; 4 } 5 List<List<Integer>> lists = new ArrayList<>(); 6 Queue<TreeNode> q = new LinkedList<>(); 7 if (root != null) { 8 q.add(root); 9 } 10 while (q.size() > 0) { 11 List<Integer> list = new ArrayList<>(); 12 for (int i = q.size() - 1; i >= 0; i--) {//此处每次第一次进入循环时的q.size()就是该层的节点数 13 TreeNode t = q.poll(); 14 list.add(t.val); 15 if (t.left != null) { 16 q.add(t.left); 17 } 18 if (t.right != null) { 19 q.add(t.right); 20 } 21 } 22 lists.add(list); 23 } 24 return lists; 25 }