hot100-39二叉树层序遍历

一、题目

二叉树的层序遍历。

二、思路

1)先处理特殊情况,root==null

2)使用一个队列,先加入根节点root,用队列的长度控制循环。

3)每次循环新创建一个list(新的一层),通过长度n控制for循环。

4)弹出队列中的节点,将对应的值加入list,并将其左右子节点加入queue。

三、代码

复制代码
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        if(root == null) return new ArrayList<>();
        List<List<Integer>> res = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.size().isEmpty){
            List<Integer> list = new ArrayList<>();
            int n = queue.size();
            for(int i = 0;i<n;i++){
                TreeNode node = queue.poll();
                list.add(node.val);
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
            res.add(list);
        }
        return res;
    }
}

四、语法

1、Queue<TreeNode> queue = new LinkedList<>(); 声明Queue类型的引用变量queue,并用LinkedList实例化。

LinkedList 实现了 Queue 接口,支持高效的 尾进头出 操作(O(1))

2、queue.offer(root); 将元素加入队列尾部,入队

等价于queue.add(root);

3、queue.poll(); 从队列头部移除并返回元素,出队

队列为空时,返回null

相关推荐
JieE21217 小时前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack201 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法
小小杨树1 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
JieE2122 天前
LeetCode 226. 翻转二叉树|JS 递归超详细拆解,二叉树入门经典题
javascript·算法
JieE2122 天前
LeetCode 104. 二叉树的最大深度|递归思路超详细拆解
javascript·算法
vivo互联网技术2 天前
CVPR 2026 | 全新强化学习框架 BeautyGRPO:重塑真实人像
算法·大模型·cvpr·影像
Darling噜啦啦2 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
用户497863050732 天前
(一)小红的数组操作
算法·编程语言
怕浪猫2 天前
Electron 系列文章封面图
算法·架构·前端框架