LeetCode 第107题:二叉树的层次遍历 II

2020-08-08  本文已影响0人  放开那个BUG

1、前言

题目描述

2、思路

二叉树层次遍历,使用 LinkedList,每次用头插法,就可以保证最后的在最前。

3、代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
        LinkedList<List<Integer>> list = new LinkedList<>();

        if(root == null){
            return list;
        }
        
        List<TreeNode> queue = new ArrayList<>();
        queue.add(root);

        while(queue.size() > 0){
            int size = queue.size();
            List<Integer> res = new ArrayList<>();
            for(int i = 0; i < size; i++){
                TreeNode cur = queue.remove(0);
                res.add(cur.val);
                if(cur.left != null){
                    queue.add(cur.left);
                }
                if(cur.right != null){
                    queue.add(cur.right);
                }
            }
            list.addFirst(res);
        }

        return list;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读