二叉树的层次遍历(自顶向下/自底向上)
给定一个二叉树,返回其节点值自底向上/自上向下的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
参考题解:负雪明烛
//BFS
//自顶向下
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
LinkedList<List<Integer>> res = new LinkedList<>();
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while(!q.isEmpty()){
LinkedList<Integer> level = new LinkedList<>();
int size = q.size();
for(int i=0;i<size;i++){
TreeNode current = q.peek();
q.poll();
if(current==null)
continue;
level.add(current.val);
q.offer(current.left);
q.offer(current.right);
}
if(!level.isEmpty()){
res.add(level); //自底向上 res.addFirst(level) 每次都压入第一个就相当于倒序输出
}
}
return res;
}
}

浙公网安备 33010602011771号