LeetCode 解题思路 21(Hot 100)

embedded/2025/3/20 19:06:32/

在这里插入图片描述

解题思路:

  1. 初始化: 创建一个结果列表和一个队列,将根节点入队。
  2. 循环处理: 当队列不为空时,记录当前层节点数 size,依次处理这些节点:
  • 出队当前节点,将其值加入临时列表。
  • 若存在左子节点,入队。
  • 若存在右子节点,入队。
  1. 返回结果: 内层循环结束时,将临时列表加入结果列表。外层循环结束时结果列表中存储的即为层序遍历的结果。

Java代码:

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();if (root == null) return result;Queue<TreeNode> queue = new LinkedList<>();queue.offer(root);while (!queue.isEmpty()) {int size = queue.size();List<Integer> list = new ArrayList<>();for (int i = 0; i < size; 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);}result.add(list);}return result;}
}

复杂度分析:

  • 时间复杂度: O(n),其中 n 是树的节点总数。
  • 空间复杂度: O(n),队列中最多存储​同一层的节点数。

在这里插入图片描述

解题思路:

  1. 终止条件: 数组为空或长度为0时返回 null。
  2. 递归构建:
  • 找到当前数组的中点,作为当前子树的根节点。
  • 递归处理左半部分数组(左子树)。
  • 递归处理右半部分数组(右子树)。

Java代码:

class Solution {public TreeNode sortedArrayToBST(int[] nums) {return buildBST(nums, 0, nums.length - 1);}private TreeNode buildBST(int[] nums, int left, int right) {if (left > right) return null;int mid = (left + right) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = buildBST(nums, left, mid - 1);root.right = buildBST(nums, mid + 1, right);return root;}
}

复杂度分析:

  • 时间复杂度: O(n),每个节点被访问且仅被访问一次。
  • 空间复杂度: O(log n),递归栈的深度为树的高度,平衡二叉树的高度为 log n。

http://www.ppmy.cn/embedded/174219.html

相关文章

【机器学习】模型拟合

1、欠拟合 1.1 现象 欠拟合是机器学习和统计建模中的一种常见问题&#xff0c;表现为模型无法充分捕捉数据中的潜在规律和模式。无论是训练数据还是测试数据&#xff0c;模型的预测误差都居高不下。 在实际应用中&#xff0c;欠拟合的模型往往显得过于简单和粗糙&#xff0c;无…

5.建造者模式

建造者模式&#xff1a;将一个复杂对象的构建过程与其表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 核心思想&#xff1a;通过分步构建对象&#xff0c;避免构造函数参数过多&#xff0c;提高代码的可读性和灵活性。 假设你正在开发一个电脑定制系统&#xff…

二进制有关概念和术语总结笔记

一、数据的基本单位(位、字节、字符、字、字长) 1、位 (Bit) 位(Bit)是计算机科学中的一个基本概念&#xff0c;全称为binary digit&#xff0c;即二进制位&#xff0c;是数据信息处理、传输、存储的最小单位。一个二进制信息数据包含多个bit位&#xff0c;每个bit位非0即1。 …

【基于深度学习的验证码识别】---- part3数据加载、模型等API介绍(1)

一、MNIST数据集 MNIST&#xff08;Modified National Institute of Standards and Technology&#xff09;数据集是计算机视觉和机器学习领域最经典的入门级数据集之一&#xff0c;主要用于手写数字识别任务。 使用示例&#xff08;以PyTorch为例&#xff09; from torchvi…

第七章 排序算法法法

算法时间复杂度 衡量一个算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 事后统计法 这种方法可行,但是有两个问题:一是要想对涉及的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件,软件等环境因素,这种方式,要在同一台计算机的…

【设计模式有哪些】

一、创建型模式&#xff08;Creation Patterns&#xff09; 1. 单例模式&#xff08;Singleton&#xff09; 核心思想&#xff1a;保证一个类仅有一个实例&#xff0c;并提供全局访问点。实现方式&#xff1a;public class Singleton {// 1. 私有静态实例&#xff0c;volatil…

【css酷炫效果】纯CSS实现悬浮弹性按钮

【css酷炫效果】纯CSS实现悬浮弹性按钮 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492020 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&…

用 C 语言理解封装、继承、多态

前言 个人邮箱&#xff1a;zhangyixu02gmail.com本文主要是给一些做嵌入式软件开发&#xff0c;并且非计科的朋友做科普。使用 C 语言理解封装、继承、多态等概念。 正文 基类&#xff1a;最基础的结构体或函数。派生类&#xff1a;基类的继承自己的特性。封装&#xff1a;将…