0
点赞
收藏
分享

微信扫一扫

[LeetCode]107. 二叉树的层序遍历 II(java实现)队列

四月天2021 2022-03-12 阅读 39

[LeetCode]107. 二叉树的层序遍历 II(java实现)队列

1. 题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 读题(需要重点注意的东西)

思路(队列):
用队列实现层次遍历,然后用Collections.reverse翻转数组即可

用队列实现层次遍历的主要思路与[LeetCode]102. 二叉树的层序遍历(java实现)层次遍历相同

3. 解法

---------------------------------------------------解法---------------------------------------------------

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        List<List<Integer>> res = new ArrayList<>();
        if(root == null) return res;
        queue.offer(root);
        while(!queue.isEmpty()){
            int k = queue.size();
            List<Integer> list = new ArrayList<>();
            while(k > 0){
                TreeNode t = queue.poll();
                list.add(t.val);
                if(t.left != null) queue.offer(t.left);
                if(t.right != null) queue.offer(t.right);
                k--;
            }
            res.add(list);
        }
        Collections.reverse(res);
        return res;
    }
}

可能存在的问题:

4. 可能有帮助的前置习题

  • [LeetCode]102. 二叉树的层序遍历(java实现)层次遍历

5. 所用到的数据结构与算法思想

  • 队列

6. 总结

举报

相关推荐

0 条评论