【LeetCode】102.二叉树的层序遍历

题目

https://leetcode.cn/problems/binary-tree-level-order-traversal/description/

思路

  1. 边界处理:根节点为空则直接返回空列表

  2. 队列初始化:创建队列,将根节点入队

  3. 逐层遍历:循环处理直到队列为空

    • 记录当前队列长度(即当前层节点数)
    • 创建当前层的值列表
    • 循环取出当前层所有节点:
      • 节点值加入当前层列表
      • 左右子节点(不为空)加入队列供下一层使用
    • 将当前层列表加入结果集
  4. 返回结果

核心:利用队列的先进先出特性,通过记录每层节点数量来控制分层输出。

code

java 复制代码
/**
 * 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>> levelOrder(TreeNode root) {
        List<List<Integer>> result = new LinkedList();
        Deque<TreeNode> deque = new LinkedList();
        if(root == null) return result;
        deque.offer(root);
        //队不为空
        while(deque.isEmpty()==false){
            List<Integer> list = new ArrayList<>();
            int nodeNum = deque.size();
            while(nodeNum>0){

                TreeNode node=deque.poll();
                nodeNum--;
                list.add(node.val);
                if(node.left !=null){
                    deque.offer(node.left);
                }
                if(node.right!=null){
                    deque.offer(node.right);
                }
                
            }
            result.add(list);

        }

         return result;
    }
}
相关推荐
计算机安禾2 小时前
【数据结构与算法】第33篇:交换排序(二):快速排序
c语言·开发语言·数据结构·数据库·算法·矩阵·排序算法
沙雕不是雕又菜又爱玩2 小时前
leetcode第12、13、14、15题(C++)
c++·算法·leetcode
汀、人工智能2 小时前
[特殊字符] 第50课:最大路径和
数据结构·算法·数据库架构·图论·bfs·最大路径和
啦啦啦!2 小时前
项目环境的搭建,项目的初步使用和deepseek的初步认识
开发语言·c++·人工智能·算法
AI成长日志2 小时前
【笔面试算法学习专栏】链表操作·基础三题精讲(206.反转链表、141.环形链表、21.合并两个有序链表)
学习·算法·面试
算法鑫探2 小时前
2025 图形(蓝桥杯十六届C组程序题 C 题)
c语言·数据结构·算法·新人首发
田梓燊2 小时前
leetcode 54
算法·leetcode·职场和发展
wuweijianlove2 小时前
算法性能优化中的编译器指令重排影响的技术4
算法
沉鱼.443 小时前
第十五届题目
linux·运维·算法