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

相关推荐
叉烧滑蛋1 小时前
B站台湾大学郭彦甫|MATLAB 学习笔记|04 变量与档案存取
数据结构
j7~2 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
傅科摆 _ py3 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
Shaoshing3 小时前
LeetCode100 42.接雨水
java·算法·leetcode
域限奇点访客3 小时前
用AI生成问卷的网站怎么选?看题目录入结构、题型映射和生成后的校验
算法
not coder4 小时前
一文讲通--从树到红黑树
数据结构·算法
octopus_c4 小时前
C++ 入门
开发语言·c++·算法
爱吃香菜的初学者5 小时前
八.数据结构——哈希表(1)
数据结构·散列表
ZhengEnCi5 小时前
2026年10月30日AI早报:Gemini 4 Carbon登顶、DeepSeek融资1055亿、智元机器人上岗实测
人工智能·算法
强哥聊算力5 小时前
《算力江湖·Intel帝国往事》第三集:安迪·格鲁夫的铁血时代:Intel为什么能把对手逼到墙角?
运维·人工智能·科技·算法·ai·gpu算力