05_二叉树的层次遍历II

简介: 05_二叉树的层次遍历II

二叉树的层序遍历 II

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[15,7],[9,20],[3]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000]
  • -1000 <= Node.val <= 1000
/
  * 解法:队列,迭代。 
  * 层序遍历,再翻转数组即可。  
/
class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        List<List<Integer>> list = new ArrayList<>();
        Queue<TreeNode> que = new LinkedList<>();
        if (root == null)
            return list;
        que.offer(root);
        while (!que.isEmpty()) {
            List<Integer> levelList = new ArrayList<>();
            int size = que.size();
            while(size > 0) {
                TreeNode peek = que.poll();
                levelList.add(peek.val);
                if (peek.left != null)
                    que.offer(peek.left);
                if (peek.right != null)
                    que.offer(peek.right);
                size--;
            }
            list.add(levelList);
        }
        List<List<Integer>> result = new ArrayList<>();
        for (int i = list.size()-1; i >= 0; i--) {
            result.add(list.get(i));
        }
        return result;
    }
}
相关文章
|
6月前
|
存储 算法 Java
二叉树层序遍历
二叉树层序遍历
45 0
|
6月前
|
算法
【二叉树】层序遍历
【二叉树】层序遍历
64 0
|
存储 C++
非递归遍历二叉树
非递归遍历二叉树
50 0
04_二叉树的层序遍历
04_二叉树的层序遍历
|
6月前
|
存储
详解二叉树的各种非递归遍历
详解二叉树的各种非递归遍历
|
6月前
|
Linux
求二叉树的先序遍历
求二叉树的先序遍历
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(上)
|
存储 搜索推荐
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
【二叉树OJ题(二)】前序遍历&&中序遍历&&后序遍历&&另一颗树的子树&&二叉树遍历&&平衡二叉树(下)
二叉树的层次遍历
层次遍历就是即逐层地,从左到右访问所有节点
二叉树的层次遍历