题目
![image.png](/uploads/projects/jaded@qvmc5n/7f02464334b0876a3edff834767d11fb.png)
解题思路
1、BFS / 双端队列
![image.png](/uploads/projects/jaded@qvmc5n/57e5f00a511369b8b81c9f6b2959c9d2.png)
实现
1、BFS / 双端队列
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> res = new ArrayList<>();
if (root != null) {
queue.add(root);
}
while (!queue.isEmpty()) {
LinkedList<Integer> tmp = new LinkedList<>();
for (int i = queue.size(); i > 0; i--) {
TreeNode node = queue.poll();
if (res.size() % 2 == 0) {
// 偶数层 -> 队列头部
tmp.addLast(node.val);
} else {
// 奇数层 -> 队列尾部
tmp.addFirst(node.val);
}
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
res.add(tmp);
}
return res;
}
}
![image.png](/uploads/projects/jaded@qvmc5n/35617f329ee6b0c3b8780209c4010c53.png)