8.24 剑指做过,忘了,不过看了题解,很快就记起来了
8.25 可以 AC

题目描述


力扣:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/submissions/
剑指:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/

解题思路


这题的返回结果是一个大数组里面以一层为一个数组返回的,忘记如何写的话,可以去看剑指 32 I 的笔记,剑指 32 I 与这题的不同在于它的返回结果是直接一个数组返回的,返回结果不以层划分:https://www.yuque.com/u1503898/shegzv/lessfi

当然,剑指 32 II 就和本题相同了。

  1. class Solution {
  2. public List<List<Integer>> levelOrder(TreeNode root) {
  3. List<List<Integer>> res = new ArrayList<>();
  4. Queue<TreeNode> queue = new LinkedList<>();
  5. if(root != null) queue.add(root);
  6. while(!queue.isEmpty()) {
  7. List<Integer> ans = new ArrayList<>();
  8. for(int i = queue.size(); i > 0; i--) { // for 循环确保最后返回的结果是一层一个数组的形式
  9. TreeNode tmp = queue.poll(); // 要出队,确保后续其左右子节点入队的准确
  10. if(tmp.left != null) queue.add(tmp.left);
  11. if(tmp.right != null) queue.add(tmp.right);
  12. ans.add(tmp.val);
  13. }
  14. res.add(ans);
  15. }
  16. return res;
  17. }
  18. }