题目传送:https://leetcode.cn/problems/binary-tree-level-order-traversal/submissions/
运行效率
代码如下:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
// 处理边界情况
if (root == null) {
return result;
}
//层序遍历问题一般都要结合queue来解决
ArrayDeque<TreeNode> queue = new ArrayDeque<>();
queue.add(root);
while (queue.size() > 0) {
// arrayDeque用于存放下一层层的所有节点
Deque<TreeNode> arrayDeque = new ArrayDeque<>(queue.size());
// arrayList存放本层的所有节点值
List<Integer> arrayList = new ArrayList<>();
while (queue.size() > 0) {
TreeNode poll = queue.poll();
if(poll.left!=null){
arrayDeque.add(poll.left);
}
if(poll.right!=null){
arrayDeque.add(poll.right);
}
arrayList.add(poll.val);
}
result.add(arrayList);
queue.addAll(arrayDeque);
}
return result;
}