题目传送:https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/
运行效率
代码如下
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
//处理边界情况
if(root==null){
return result;
}
//层序遍历一般通过队列来实现
ArrayDeque<TreeNode> deque = new ArrayDeque<>();
deque.add(root);
while (!deque.isEmpty()) {
ArrayList<Integer> list = new ArrayList<>();
// 用于存储下一层的节点
ArrayDeque<TreeNode> arrayDeque = new ArrayDeque<>();
while (!deque.isEmpty()) {
TreeNode poll = deque.poll();
list.add(poll.val);
if (poll.left != null) {
arrayDeque.add(poll.left);
}
if (poll.right != null) {
arrayDeque.add(poll.right);
}
}
result.add(list);
deque.addAll(arrayDeque);
}
result=reverse(result);
return result;
}
//翻转顺序
public List<List<Integer>> reverse(List<List<Integer>> list) {
List<List<Integer>> result = new ArrayList<>();
for (int i = list.size() - 1; i >= 0; i--) {
result.add(list.get(i));
}
return result;
}
}