计海龄 发表于 2025-8-7 18:46:17

【LeetCode 102】算法:二叉树的层序遍历

题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

算法思路:

[*]用 Queue 存放当前层的节点。
[*]每轮循环处理 一整层,把节点值收集到 List。
[*]依次把左右子节点入队。
复杂度:

[*]时间复杂度:O(n) —— 每个节点恰好访问一次
[*]空间复杂度:O(n) —— 队列最大宽度(最底层节点数)
补充: 如果只想拿到层序遍历的一维列表,去掉 curLevel 的收集,直接 res.add(node.val) 即可。
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 levelOrder(TreeNode root) {      List res = new ArrayList();      if(root==null) return res;      Queue q = new LinkedList();      // 1、根节点入队      q.offer(root);      // 把每一层的节点数组(子数组),加入到最终集合      while(!q.isEmpty()){            int num = q.size(); // 每层的宽度            List level = new ArrayList(); // 存储当前层的全部结点            // 2、遍历当前层:每次循环,从队头取出一个节点,直到取完此层            for(int i=0; i
页: [1]
查看完整版本: 【LeetCode 102】算法:二叉树的层序遍历