二叉树的层次遍历(自顶向下/自底向上)

给定一个二叉树,返回其节点值自底向上/自上向下的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
参考题解:负雪明烛

//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;
        }

}

posted @ 2020-09-07 15:25  _zjk  阅读(598)  评论(0)    收藏  举报