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

相关推荐
手写码匠8 分钟前
【实战评测】华为云 MaaS 平台 DeepSeek 大模型推理服务 + Dify 一键部署全攻略
人工智能·深度学习·算法·aigc
咪饭只吃一小碗19 分钟前
JS算法基础: 常用方法整理
算法·程序员
z200509301 小时前
今日算法(回溯算法)
数据结构·算法
毅炼1 小时前
今日LeetCode 摸鱼打卡
java·算法·leetcode
m0_629494731 小时前
LeetCode 热题 100-----28. 两数相加
数据结构·算法·leetcode·链表
菜菜的顾清寒1 小时前
力扣HOT100(25)环形链表
算法·leetcode·链表
学不懂飞行器1 小时前
【2024电赛H题硬核解析】自动行驶小车满分对策:多路灰度循迹与陀螺仪“交替盲走”融合算法(附源码)
stm32·单片机·嵌入式硬件·算法·电赛
机器学习之心1 小时前
大跨度拱桥施工智能优化:基于改进RBF神经网络与多目标算法的工程实践
人工智能·神经网络·算法·大跨度拱桥施工智能优化
Deep-w1 小时前
【MATLAB】基于 MATLAB/Simulink 的无刷直流电机(BLDC)转速控制模糊 PID 算法
开发语言·算法·matlab
皮卡祺q2 小时前
【算法-0】背包问题(三维+二维)
java·javascript·算法