题目描述:
解析:定义一个指针,永远指向当前层的最后一个节点,而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;
}
}