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;
    }
}
相关文章
|
10月前
|
存储 算法 Java
二叉树层序遍历
二叉树层序遍历
82 0
|
10月前
|
算法
【二叉树】层序遍历
【二叉树】层序遍历
96 0
|
10月前
|
Linux
数据结构实验之求二叉树后序遍历和层次遍历
数据结构实验之求二叉树后序遍历和层次遍历
数据结构实验之二叉树二:遍历二叉树
数据结构实验之二叉树二:遍历二叉树
04_二叉树的层序遍历
04_二叉树的层序遍历
|
10月前
|
存储
什么?二叉树的反前序遍历?
什么?二叉树的反前序遍历?
|
10月前
|
C++
二叉树的前序遍历(C++)
二叉树的前序遍历(C++)
67 0
二叉树的前序遍历(C++)
求二叉树的层次遍历
求二叉树的层次遍历
数据结构实验之二叉树五:层序遍历
数据结构实验之二叉树五:层序遍历
|
10月前
|
Linux
求二叉树的先序遍历
求二叉树的先序遍历