文章目录
- 题目
- 方法一:队列+层序迭代
题目
方法一:队列+层序迭代
解题详情:【LeetCode-中等题】102. 二叉树的层序遍历
res.add(0,zres); //效果是将 zres 列表作为 res 的第一个子列表,并将其它原本在第一位置及之后的子列表向后移动一个位置。
// 从而达到逆序的效果
这样就无须将最后的结果res做reverse翻转了
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if(root == null) return res;
List<Integer> zres = null;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
zres = new ArrayList<>();
for(int i = 0 ; i < size ;i++){
root = queue.poll();
zres.add(root.val);
if(root.left!=null) queue.offer(root.left);
if(root.right!=null) queue.offer(root.right);
}
res.add(0,zres);
// 使用 res.add(0,zres) 将 zres 列表插入到 res 的第一个位置。
// 这样做的效果是将 zres 列表作为 res 的第一个子列表,并将其它原本在第一位置及之后的子列表向后移动一个位置。
}
return res;
}
}