自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 130. 被围绕的区域 — C语言高质量题解

摘要:该算法解决矩阵中被'X'围绕的'O'区域替换问题。核心思路是反向处理:先标记所有与边界相连的'O'(这些不会被包围),然后遍历矩阵将未标记的'O'替换为'X',最后还原标记。采用DFS实现,时间复杂度O(mn),空间复杂度O(mn)。也可用BFS或并查集优化。关键在于理解"与边界连通则不被包围"这一特性,通过预处理边界元素来高效解决问题。

2026-03-31 16:58:50 27

原创 208. 实现 Trie(前缀树) —— 高质量 C 语言题解

Trie树是一种高效存储和检索字符串的前缀树数据结构。本文实现了一个Trie类,包含插入、搜索和前缀匹配功能。每个节点包含26个子节点指针和结束标记。插入操作逐字符创建节点并标记结尾;搜索操作检查完整单词;前缀匹配只需检查字符路径存在。C语言实现展示了节点创建、内存管理等细节,所有操作时间复杂度均为O(L),L为单词长度。Trie树特别适合前缀搜索场景,但需注意其较高的空间复杂度。

2026-03-31 16:58:35 353

原创 LeetCode 39 | 组合总和(Combination Sum)C语言高质量题解

摘要: 该问题要求从无重复元素的整数数组candidates中找出所有和为target的组合,允许重复使用同一数字。通过回溯算法实现:从当前索引开始递归尝试每个数字,若数字不大于剩余目标值则继续递归,否则剪枝。当目标值为0时保存当前组合。C语言实现中,使用path数组记录组合,动态分配内存存储结果。时间复杂度约为O(N^T),其中N为候选数个数,T为目标值。示例展示了回溯过程及剪枝优化。

2026-03-31 16:58:09 156

原创 LeetCode 52. N 皇后 II(N-Queens II)题解

N皇后II问题要求计算在n×n棋盘上放置n个互不攻击的皇后的不同解法数量。采用回溯算法逐行放置皇后,检查列和对角线冲突,使用数组记录皇后位置。当完成所有行放置时计数加一。该算法时间复杂度为O(n!),空间复杂度O(n)。对于n≤9的输入,普通回溯即可高效解决;对于更大的n可采用位运算优化。示例中n=4时有2种解法,n=1时有1种解法。

2026-03-31 16:57:48 257

原创 22. 括号生成(Generate Parentheses)高质量 C 语言题解

摘要:本文介绍使用回溯算法生成所有有效括号组合。给定n对括号,通过递归构建字符串,确保'('数量不超过n且')'数量不超过'('数量。算法时间复杂度为O(4^n/√n),空间复杂度为O(n*4^n/n^1.5)。示例展示了n=3时的5种有效组合。该问题与Catalan数相关,可应用于组合数学中的多种场景。

2026-03-31 16:57:31 227

原创 【C语言】LeetCode 79. 单词搜索(Word Search)高质量题解

该题目要求在m×n的二维字符网格中查找是否存在给定的单词,单词需通过相邻单元格(水平或垂直)的字母顺序构成,且每个单元格只能使用一次。解题采用DFS+回溯方法:从每个格子出发递归搜索四个方向,匹配字符时标记为已访问,回溯时恢复原值。优化措施包括剪枝(提前终止不匹配路径)和字母数量统计。C语言实现通过递归函数完成搜索,时间复杂度O(4^L)(L为单词长度),空间复杂度O(L)。示例测试验证了算法正确性,该方法适用于题目给定的小规模数据限制。

2026-03-30 17:26:33 140

原创 108. 将有序数组转换为二叉搜索树(C语言高质量题解)

摘要:本文介绍了将升序数组转换为高度平衡二叉搜索树(BST)的方法。通过选取数组中间元素作为根节点,并递归构建左右子树,确保每个子树高度差不超过1。C语言实现采用分治策略,时间复杂度O(n),空间复杂度O(logn)。示例演示了数组[-10,-3,0,5,9]转换为BST的过程,最终形成高度平衡的树结构。该方法适用于严格递增数组,具有实现简单、效率最优的特点。

2026-03-30 17:26:00 136

原创 LeetCode 148 | 排序链表(Sort List)C 语言高质量题解

本文探讨链表排序问题,提出采用归并排序算法实现O(nlogn)时间复杂度的解决方案。通过快慢指针分割链表(findMiddle函数),递归排序左右子链表(sortList函数),再合并有序链表(merge函数)。该方法递归实现空间复杂度为O(logn),符合题目进阶要求。文章还指出可通过自底向上迭代进一步优化为O(1)空间复杂度。关键点包括:链表特性决定归并排序的适用性、快慢指针找中点技巧、递归分治思想的应用,以及合并有序链表的双指针技术。该解法高效处理大规模链表排序,体现了经典算法在数据结构上的灵活应用。

2026-03-30 17:25:39 147

原创 LeetCode 427. 建立四叉树(Construct Quad Tree)题解

这篇文章介绍了如何用四叉树表示一个二进制矩阵。四叉树构建规则是:若子矩阵元素全相同则创建叶子节点,否则递归划分为四个子矩阵处理。文章提供了递归分治的解题思路,包括判断子矩阵同值性、递归划分策略以及终止条件处理。给出的C++实现代码展示了具体的构建过程,通过build函数递归处理四个象限。时间复杂度为O(n²),空间复杂度为O(logn)。该算法适用于2^k×2^k的矩阵,是典型的递归分治应用场景,能有效处理矩阵的四叉树表示问题。

2026-03-30 17:25:14 122

原创 LeetCode 23 | 合并 K 个升序链表 (Merge k Sorted Lists) 高质量题解

摘要:本文介绍了合并K个升序链表的三种方法。顺序合并法(O(kn))适用于少量链表;分治法(O(nlogk))通过递归拆分合并,效率更高;最小堆法(O(nlogk))利用优先队列处理节点。重点给出了分治法的C语言实现,包括合并两个链表的辅助函数和递归合并逻辑。三种方法的时间复杂度分别为O(kn)、O(nlogk)和O(nlogk),适用于不同场景。该问题考察链表操作和算法优化能力,建议根据链表数量选择合适方法。

2026-03-30 17:24:52 178

原创 [特殊字符] LeetCode 57. 插入区间(C语言详解 + 图解 + 思路拆解)

文章摘要:本文介绍如何将新区间插入有序无重叠区间数组并保持有序性。核心思路采用三段处理法:1)直接添加左边不重叠区间;2)动态合并所有重叠区间(取最小起点和最大终点);3)添加右边不重叠区间。通过示例演示了合并过程,并提供了C语言实现代码。特别提醒注意边界条件判断和动态更新合并区间,与56题合并所有区间的区别在于本题只需局部合并。时间复杂度为O(n)。(149字)

2026-03-27 21:30:39 27

原创 [特殊字符] 452. 用最少数量的箭引爆气球(贪心经典)

🔍 贪心算法解决区间覆盖问题 核心思路:用最少的箭(点)覆盖所有气球区间(区间)。按右端点排序后,每次在当前最小右端点射箭,尽可能覆盖更多后续区间。 关键步骤: 1️⃣ 按右端点升序排序 2️⃣ 初始化箭数=1,记录首个区间的右端点 3️⃣ 遍历区间:若当前区间起点>上一箭的落点,则需新增一箭 示例: 输入 [[10,16],[2,8],[1,6],[7,12]] → 排序后按右端点射箭(x=6和x=12)→ 最少需 2支箭。 注意: 排序选右端点而非左端点 判断条件是 > 而非 >=(

2026-03-27 21:30:16 372

原创 71. 简化路径(C语言实现 + 栈解法)

摘要:该问题要求将Unix风格的绝对路径简化为规范格式。解题思路是使用栈来维护路径:遇到"."跳过,".."出栈(若栈非空),其他目录名入栈。关键步骤包括:1)按"/"分割路径;2)用栈处理各段;3)最终拼接栈内容。C语言实现需注意内存管理,时间复杂度O(n)。易错点包括:连续斜杠处理、".."边界检查、结果格式要求等。核心思想是通过栈模拟路径操作,最终得到以单斜杠分隔、无冗余的规范路径。

2026-03-27 21:29:56 193

原创 56. 合并区间(Merge Intervals)——C语言高质量题解

本文介绍了合并重叠区间的算法。首先将区间按起点排序,然后遍历区间,维护当前合并区间[start,end]。遇到重叠区间时更新end,不重叠时保存当前区间并更新为新区间。最后记得处理最后一个区间。C语言实现使用qsort排序,通过动态分配内存返回结果数组。算法时间复杂度为O(nlogn),空间复杂度为O(n)。关键点包括:必须排序、正确处理最后一个区间、注意内存分配和返回格式要求。

2026-03-27 21:29:39 218

原创 155. 最小栈(MinStack)题解

摘要:设计一个支持O(1)时间获取最小值的MinStack类,采用双栈法实现。主栈data存储元素,辅助栈minStk同步存储当前最小值:push时比较新元素与minStk栈顶值,pop时同步弹出。该方法确保getMin()直接返回minStk栈顶值。C++实现中,四个操作均为O(1)时间复杂度,空间复杂度O(n)。双栈法逻辑清晰,是面试推荐方案,也可提及单栈优化法展现知识深度。示例操作演示了栈状态变化,验证了算法的正确性。

2026-03-27 21:29:12 263

原创 150. 逆波兰表达式求值(Evaluate Reverse Polish Notation)

本文介绍如何用栈结构计算逆波兰表达式(后缀表达式)。逆波兰表达式的计算规则是:遇到数字入栈,遇到运算符则弹出栈顶两个元素运算后结果入栈。需要注意运算顺序,保证次栈顶元素在前。文中给出了C语言实现,使用栈模拟计算过程,处理了加减乘除四种运算,特别说明除法向零截断的特性。算法时间复杂度O(n),空间复杂度O(n)。关键点包括正确处理负数、运算顺序以及除法的截断方式。

2026-03-26 00:03:59 42

原创 224. 基本计算器(C 语言高质量解法)

摘要:本文介绍了一个支持括号和一元负号的基本计算器实现方法。通过顺序扫描字符串,使用栈保存括号前的计算状态(res和sign),遇到右括号时弹出栈顶状态结合当前结果。关键点包括:1)符号处理(+为1,-为-1);2)多位数累积计算;3)使用long long防止溢出。C语言实现采用栈结构,时间复杂度O(n),空间复杂度O(n)。该方法能正确处理"(1+(4+5+2)-3)+(6+8)"等复杂表达式,是处理带括号加减表达式的通用模板。

2026-03-26 00:03:44 28

原创 LeetCode 25 | K 个一组翻转链表 —— 高质量题解

题目要求每k个节点一组翻转链表,不足k个则保持原样。解题思路是:使用dummy节点简化头节点处理,用pre和end指针定位每组区间;断开链表后反转区间段,再重新连接。关键点包括:1)每组反转前重置指针;2)正确断开和连接链表;3)处理边界情况。时间复杂度O(n),空间复杂度O(1)。该题考察链表操作细节,是面试常见题型。

2026-03-26 00:03:32 37

原创 19. 删除链表的倒数第 N 个结点 — 高质量解法解析

本文介绍了一种使用双指针法删除链表倒数第n个节点的高效算法。通过创建虚拟头节点统一处理边界情况,利用快慢指针在一次遍历中定位目标节点:快指针先走n步,然后与慢指针同步移动,当快指针到达末尾时,慢指针正好指向待删除节点的前驱节点。该算法时间复杂度为O(n),空间复杂度O(1),满足单次扫描的要求。C语言实现中特别注意了内存释放操作,确保不产生内存泄漏。这种方法既简洁又高效,适用于各类链表操作场景。

2026-03-26 00:03:20 16

原创 LeetCode 82 | 删除排序链表中的重复元素 II(C语言实现)

摘要:本文介绍了如何删除排序链表中所有重复节点,只保留唯一值的解法。使用双指针(prev和cur)配合哑节点dummy,当发现重复值时跳过整段重复节点,将prev->next指向后续不重复节点。时间复杂度O(n),空间复杂度O(1)。与83题(保留一个重复节点)不同,本题要求彻底删除所有重复节点。关键点在于使用哑节点统一处理头节点可能被删除的情况,以及通过双指针精确控制节点保留逻辑。

2026-03-26 00:03:07 27

原创 61. 旋转链表(C语言高质量题解)

该题目要求将链表向右旋转k个位置。核心思路是通过成环和找断点的方式实现:首先计算链表长度n并找到尾节点,将k取模n处理大数情况,然后将链表首尾相连成环。接着找到第n-k个节点作为新尾节点,其下一个节点作为新头节点,最后断开环返回新头。时间复杂度O(n),空间复杂度O(1)。解题关键在于理解旋转操作等效于将链表后k%n个节点移到前面,而非使用快慢指针。

2026-03-24 13:23:46 26

原创 86. 分隔链表(C语言高质量题解)

本文介绍了链表稳定分区的解题方法。给定链表和整数x,要求将所有小于x的节点移动到大于等于x的节点之前,同时保持原始相对顺序。采用双链表法:创建small和big两个虚拟头节点,遍历原链表时根据节点值与x的比较结果分别接入对应链表,最后拼接两个链表并断开big链表尾防止成环。该方法时间复杂度O(n),空间复杂度O(1)。关键点在于使用虚拟头节点简化操作,以及注意断开原链表连接避免形成环。这种双链表分离法是处理链表分区问题的通用套路,适用于LeetCode上多个类似题目。

2026-03-24 13:23:31 140

原创 LeetCode 146. LRU 缓存 — 高质量题解

本文介绍了LRU缓存的实现方法,通过哈希表+双向链表实现O(1)时间复杂度的get和put操作。哈希表用于快速查找,双向链表维护使用顺序,头部为最近使用节点,尾部为最久未使用节点。文章详细说明了get和put的操作流程,包括节点移动、插入和删除机制,并提供了C++实现代码。同时分析了时间/空间复杂度,给出示例演示缓存淘汰过程,并指出常见实现错误,如使用单链表、忘记更新哈希表等。这种设计能高效处理缓存淘汰问题。

2026-03-24 13:23:18 129

原创 4. 寻找两个正序数组的中位数(C语言高质量解法)

摘要:本文探讨了在两个有序数组中找到中位数的问题,要求算法时间复杂度为O(log(m+n))。核心思路是通过二分法在两个数组中寻找合适的划分位置,确保左半部分元素数量等于右半部分,且满足划分条件。实现时需始终在较短数组上进行二分以避免越界。文章提供了C语言实现代码,分析了时间复杂度为O(log(min(m,n)))的优化方法,并解答了面试中常见的边界条件处理问题。该算法通过巧妙划分和边界值处理,高效解决了有序数组合并中位数的计算问题。

2026-03-24 13:23:02 24

原创 LeetCode 68:文本左右对齐(Text Justification)高质量题解

摘要:本文介绍了文本左右对齐问题的解法。给定单词数组和行宽,通过贪心算法分行:尽可能多放单词,计算所需空格数。普通行均匀分配空格(左多右少),最后一行左对齐。C语言实现中,动态计算每行单词数、空格分布,处理边界条件(单单词行)。面试要点包括:解释贪心策略的正确性,演示空格分配规则,强调特殊情况的处理。解题步骤为:1)贪心分行;2)计算空格分布;3)构建对齐字符串。

2026-03-24 13:22:49 31

原创 LeetCode 30. 串联所有单词的子串(C 语言高质量解析)

题目要求找出字符串s中所有由words数组单词任意顺序串联而成的子串起始下标。核心解法采用滑动窗口结合词频统计:1. 统计words词频作为目标;2. 按单词长度分偏移量滑动窗口;3. 维护窗口内词频,当匹配时记录起始位置。C语言实现需手动处理哈希表,时间复杂度O(n*m)(n为s长度,m为words大小)。该解法适用于固定长度单词的串联子串查找问题。

2026-03-23 18:57:32 39

原创 【LeetCode 76】最小覆盖子串(Minimum Window Substring)题解与C语言实现

摘要:本文介绍了使用滑动窗口算法解决字符串最小覆盖子串问题。给定字符串s和t,要求在s中找到包含t所有字符的最短子串。解题思路包括:1)统计t字符需求;2)维护滑动窗口计数;3)当窗口满足条件时收缩左边界。C语言实现采用双指针和两个128长度的数组来跟踪字符需求,时间复杂度O(m+n),空间复杂度O(1)。关键点包括正确处理重复字符、valid计数和返回空字符串的格式。该方法是滑动窗口处理子串问题的经典模板,适用于各类最小/最大覆盖问题。

2026-03-23 18:57:13 45

原创 LeetCode 120 | 三角形最小路径和 — DP 最优解及空间优化

摘要:本文探讨了三角形最小路径和问题,要求从顶至底找出和最小的路径。采用动态规划方法,定义状态dp[i][j]表示到达第i行第j列的最小路径和,通过状态转移方程计算。优化方案使用一维数组倒序更新,将空间复杂度降至O(n)。C语言实现展示了从下往上的更新过程,时间复杂度为O(n²)。这是经典的动态规划问题,面试中常考察二维和一维两种解法。

2026-03-23 18:56:58 40

原创 LeetCode 64. 最小路径和(Minimum Path Sum)高质量题解

摘要:本文介绍了求解网格最小路径和的动态规划方法。题目要求在m×n网格中从左上角到右下角找一条路径,使得数字总和最小。采用动态规划,定义dp[i][j]表示到达(i,j)的最小路径和,状态转移方程为dp[i][j]=min(dp[i-1][j],dp[i][j-1])+grid[i][j]。提供了二维DP和一维DP(空间优化)两种实现方案,分析其时间复杂度和空间复杂度。二维DP为O(mn)空间,一维DP优化至O(n)空间。文章还讨论了路径打印和边界处理等面试技巧。

2026-03-23 18:56:37 171

原创 63. 不同路径 II (含障碍物)

本文探讨机器人路径计数问题:在m×n网格中,机器人从左上角出发,每次只能向右或向下移动,避开障碍物(1表示障碍,0表示通路),求到达右下角的路径数。采用动态规划方法,定义dp[i][j]表示到达(i,j)的路径数:若遇障碍则dp[i][j]=0,否则dp[i][j]=dp[i-1][j]+dp[i][j-1]。处理边界条件时需注意起点或首行/列遇障碍的情况。提供二维数组解法(O(mn)空间)及优化的一维数组解法(O(n)空间)。关键点包括:正确处理障碍物、边界初始化、状态转移方程及空间优化技巧,适合面试和算

2026-03-23 18:56:15 293

原创 [特殊字符] LeetCode 100. 相同的树(C语言详解 | 递归 + 迭代)

摘要:判断两棵二叉树是否完全相同,需满足结构一致且节点值对应相等。核心解法:1️⃣ 递归法(DFS)同时遍历两棵树,分4种情况处理:双空节点返回true;单空或值不等返回false;递归比较左右子树。时间复杂度O(n),空间O(h)。2️⃣ 迭代法(BFS)使用队列同步层级遍历,每次出队比较节点,并同步入队子节点。注意易错点如遗漏NULL判断或错误逻辑。本质是结构+值的双重匹配问题,需全部节点同步匹配。

2026-03-22 14:50:41 143

原创 [特殊字符] LeetCode 226. 翻转二叉树(C语言详解 | 递归 + 迭代)

本文介绍了翻转二叉树的两种解法:递归和迭代。核心思路是交换每个节点的左右子树。递归解法采用前序或后序遍历,时间复杂度O(n),空间复杂度O(h)。迭代解法使用BFS层序遍历,时间复杂度O(n),空间复杂度O(n)。该题考察二叉树递归基本功和指针操作,是必须掌握的经典题目。

2026-03-22 14:50:20 46

原创 [特殊字符] LeetCode 101. 对称二叉树(C语言)——递归 + 迭代详解(高质量图解思路)

本文介绍了判断二叉树是否对称的两种方法。核心思路是将对称问题转化为左右子树镜像比较,即左子树的左节点与右子树的右节点比较,左子树的右节点与右子树的左节点比较。递归解法通过定义isMirror函数实现交叉比较,终止条件包括空节点检查和值相等检查。迭代解法使用队列进行BFS遍历,成对比较节点。常见错误包括同方向比较、单参数递归和空节点遗漏。两种方法时间复杂度均为O(n),递归空间复杂度为树高O(h),迭代为O(n)。记忆模板建议使用交叉判断的递归结构。

2026-03-22 14:50:03 42

原创 105. 从前序与中序遍历构造二叉树(C语言高质量题解)

本文详细讲解了如何根据二叉树的前序遍历和中序遍历结果重建二叉树。核心思路是利用前序遍历确定根节点,通过中序遍历划分左右子树,递归构建整棵树。文章提供了C语言最优实现(时间复杂度O(n)),采用哈希表优化查找过程,并总结了常见错误和解题模板。关键点包括:前序首元素为根节点、中序分割确定子树范围、递归终止条件等。最后还延伸了类似问题的解题思路,强调"前序找根,中序分割"的核心套路。

2026-03-22 14:49:43 187

原创 [特殊字符]【LeetCode 106】从中序与后序遍历构造二叉树(C语言详解|递归+区间划分)

本文介绍了如何根据中序遍历和后序遍历结果重建二叉树的算法。核心思路是利用后序遍历确定根节点(最后一个元素),在中序遍历中找到根节点位置以划分左右子树。递归解法通过计算左子树大小来切分后序遍历数组,实现子树重建。当前实现时间复杂度为O(n²),可通过哈希表优化至O(n)。常见错误包括根节点定位错误、区间划分不当等。与前序+中序重建相比,后序重建的根节点在数组末尾。解题关键在于掌握根节点定位、中序划分和子树数组切分三个步骤。建议面试时能熟练手写递归版本,清晰描述区间划分逻辑,并说明优化思路。

2026-03-22 14:49:20 374

原创 【LeetCode 72】编辑距离(C语言详解 + DP公式推导)

本文介绍了计算两个字符串编辑距离的动态规划解法。编辑距离指将word1转换为word2所需的最少操作次数(插入、删除或替换字符)。核心是定义dp[i][j]表示word1前i个字符转换为word2前j个字符的最小操作数。状态转移方程分两种情况:当前字符相等时直接继承前值,不等时取三种操作的最小值加1。初始化空串情况后,通过二维DP填充表格。算法时间复杂度O(mn),空间复杂度O(mn),可通过滚动数组优化空间。示例展示了"horse"到"ros"的转换过程,共需3步操

2026-03-21 15:34:31 174

原创 [特殊字符] LeetCode 123. 买卖股票的最佳时机 III(两次交易 | 状态机DP详解)

摘要:本文讨论股票买卖问题,要求在最多两次交易的情况下获取最大利润。通过将交易过程分解为四个关键状态(第一次买入/卖出,第二次买入/卖出),建立状态转移方程来动态更新每个状态的最优值。核心思路是把买卖操作视为状态转移而非区间选择问题,采用O(n)时间复杂度的动态规划解法。该方法可扩展至最多k次交易的情况,是解决股票交易系列问题的通用模板。

2026-03-21 15:33:29 133

原创 LeetCode 188. 买卖股票的最佳时机 IV(C语言详解 + 通用模板)

本文介绍了股票交易问题的通用动态规划解法。当交易次数k超过天数一半时,转化为无限次交易问题(贪心算法)。否则使用动态规划,定义buy[j]和sell[j]分别表示第j次买卖后的最大利润。通过状态转移方程计算每日价格对利润的影响,最终返回sell[k]即为最大利润。该方法时间复杂度O(n*k),空间复杂度O(k),是解决各类股票交易问题的通用模板。关键点在于识别k≥n/2时的优化条件,以及理解多阶段状态转移机制。

2026-03-21 15:32:25 167

原创 LeetCode 221. 最大正方形(动态规划详解 + C语言实现)

本文介绍了一种使用动态规划求解二维矩阵中最大全1正方形面积的方法。关键点在于定义dp[i][j]为以(i,j)为右下角的最大正方形边长。状态转移方程为:当matrix[i][j]为'1'时,取上方、左方和左上角三个方向的最小值加1。边界情况处理第一行和第一列,最终结果为最大边长的平方。算法时间复杂度O(mn),空间复杂度O(mn),并可优化为O(n)。核心思想是正方形的扩展受限于最短边,通过动态规划高效求解。

2026-03-21 15:31:04 308

原创 【LeetCode 104】二叉树的最大深度(C语言详解 | 递归 + BFS)

本文介绍了求解二叉树最大深度的两种方法。核心思路是:最大深度=1+max(左子树深度,右子树深度)。递归解法(DFS)简洁高效,时间复杂度O(n),空间复杂度O(h);层序遍历(BFS)直观但需额外队列,空间复杂度O(n)。该问题是二叉树基础问题,其解题模式可应用于平衡二叉树判断、最小深度求解等衍生问题。两种方法各有优劣,递归代码简洁但可能栈溢出,BFS更直观但需要更多空间。

2026-03-21 15:29:51 163

爱心表白动画项目-简单练手项目

文件列表 │ 文件 │ 说明 │ 依赖 │ │ love_heart.py │ 图形界面版 - Pygame实现,最美观 │ 需要 pip install pygame │ │ love_heart_console.py │ 控制台基础版 - 交互式菜单 │ 无需额外依赖 │ │ love_heart_advanced.py │ 控制台高级版 - 彩色动画、粒子效果 │ 无需额外依赖 │ │ love_heart_tkinter.py │ Tkinter版 - 图形界面 │ 需要tkinter(部分Python未安装) │ 功能特色 - 心跳动画 - 模拟真实心跳效果 - 粒子特效 - 爱心粒子飘散 - 星空背景 - 闪烁星星

2026-03-04

MicrosoftEdge

MicrosoftEdge

2026-03-02

minix-master.zip

minix-master.zip

2026-02-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除