题目描述:

解析:定义一个指针,永远指向当前层的最后一个节点,而if (poll == p) 就说明是当前层结束了,p指向队列的末尾元素
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {if (root == null) return new ArrayList<>();//指针LinkedList<TreeNode> queue = new LinkedList<>();List<Integer> path = new ArrayList<>();List<List<Integer>> res = new ArrayList<>();TreeNode p = root; // 定义一个指针,永远指向当前层的最后一个节点queue.offer(root);while (!queue.isEmpty()) {TreeNode poll = queue.poll();path.add(poll.val);if (poll.left != null) {queue.offer(poll.left);}if (poll.right != null) {queue.offer(poll.right);}if (poll == p) { // 说明是当前层结束了res.add(path);path = new ArrayList<>();if (!queue.isEmpty()) {p = queue.getLast();}}}return res;}}
