
leetcode-python
圆滚滚的柴柴
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode150. 逆波兰表达式求值
题目:根据 逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: 该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入: [“4”, “13”, “5”, “/”, “+”原创 2020-12-21 20:49:40 · 221 阅读 · 0 评论 -
leetcode149. 直线上最多的点数
题目:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例:思路:计算通过定点x的所有直线斜率,用哈希表来记录同一斜率的个数,计算完成后更新最大点数;之后接着计算下一个点。每次计算通过某一个点的斜率时,只需要与后面的点匹配计算,因为之前的点已经与该点匹配过了。哈希表的key需要注意,由于斜率可能是浮点,用浮点做键值不稳定,所以我们需要用分数来表示斜率,把分子分母约分到最简形式,然后用字符存储,同时要注意正负号。对于定点x重复出现的情况,我们额外记录出现的次数,原创 2020-12-21 20:41:57 · 281 阅读 · 0 评论 -
leetcode148. 排序链表
题目:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?思路: 归并排序的时间复杂度是O(n log n),采用了分治思想,如下图(出自这篇文章) 所以“分割”与“合并”可以采用递归来实现。使用快慢指针法找到链表的中点位置,即,慢指针每次移动一步,快指针每次移动两步。找到中点位置后,可以把链表分成两个子链表。对两个子链表分别排序。然后合并两个有序序链表。递归程序我们原创 2020-12-21 15:21:22 · 181 阅读 · 0 评论 -
leetcode147. 对链表进行插入排序
题目:对链表进行插入排序。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5原创 2020-12-18 10:26:28 · 83 阅读 · 0 评论 -
leetcode146. LRU 缓存机制
题目:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之原创 2020-12-17 14:43:32 · 169 阅读 · 1 评论 -
leetcode145. 二叉树的后序遍历
题目:给定一个二叉树,返回它的 后序 遍历。示例:进阶:递归算法很简单,你可以通过迭代算法完成吗?思路:递归,借助栈的迭代。递归代码很简单,不写了。迭代:若根节点不为空,则压栈,根节点移向左子树;若根节点为空,弹出栈顶元素,如果栈顶元素有右子树,且是右子树没有访问,则将该节点重新压栈,根节点置为该节点的右子树。重复上述过程如何判断某个节点的子节点已经被访问了?根据后序遍历的特点:左-右-中,我们存储一个前驱节点pre,表示最新加入结果集的元素。如果某个节点的右节点与pre相等,原创 2020-12-15 17:06:41 · 76 阅读 · 0 评论 -
leetcode144. 二叉树的前序遍历
题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例:思路:递归代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightcla原创 2020-12-15 15:35:35 · 238 阅读 · 0 评论 -
leetcode143. 重排链表
题目:给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.思路:找出链表中点位置,将后半部分链表反原创 2020-12-15 15:24:29 · 153 阅读 · 0 评论 -
leetcode142. 环形链表 II
题目:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例:思路:集合进阶对空间的优化可以参考这篇题解代码:# Definition for singly-linked原创 2020-12-15 11:26:25 · 248 阅读 · 0 评论 -
leetcode141. 环形链表
题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?示例:思路:借助一个集合,每访问一个节点,就原创 2020-12-15 11:12:43 · 93 阅读 · 0 评论 -
leetcode140. 单词拆分 II
题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = “catsanddog”wordDict = [“cat”, “cats”, “and”, “sand”, “dog”]输出:[“cats and dog”,“cat sand dog”]示例 2:输入:s原创 2020-12-15 09:28:53 · 181 阅读 · 0 评论 -
leetcode139. 单词拆分
题目:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, word原创 2020-12-14 20:30:59 · 261 阅读 · 0 评论 -
leetcode138. 复制带随机指针的链表
题目:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的 深拷贝。我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:val:一个表示 Node.val 的整数。random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。示例:思路:用一个字典visited记录已经复制过的节点,键是原节点,值是拷贝原创 2020-12-14 17:20:11 · 103 阅读 · 0 评论 -
leetcode137. 只出现一次的数字 II
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99思路:根据上一题的解法,异或可以找出出现奇数次的数字,如何区分出现一次和出现3次的数字呢。参考官方题解,但不是很理解。。。第一次出现该数字,就加到seenOnce;第二次出现,从se原创 2020-12-14 16:33:05 · 99 阅读 · 0 评论 -
leetcode136. 只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:可以借助一个集合,遍历数组,如果集合里没有出现该数字,就加入集合;如果出现了,就从集合删除。这样最后剩下的就是唯一出现的元素。异或运算直接得到出现一次的元素。图片出自官方题解代码:集合cla原创 2020-12-14 15:48:21 · 89 阅读 · 0 评论 -
leetcode135. 分发糖果
题目:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入: [1,2,2]输出: 4解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个原创 2020-12-14 14:50:22 · 350 阅读 · 0 评论 -
leetcode134. 加油站
题目:在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入:gas = [1,2,3,4,5]cost = [3,4,5,原创 2020-12-14 11:24:58 · 102 阅读 · 0 评论 -
leetcode133. 克隆图
题目:给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node {public int val;public List neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表 是用于表示有限图的无序列表的集合。每个列表原创 2020-12-03 20:19:31 · 123 阅读 · 0 评论 -
leetcode132. 分割回文串 II
题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: “aab”输出: 1解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。思路:动态规划定义dp[i-1]为子串s[0:i-1](前闭后闭)的最小分割次数,推出dp[i]的转移方程。首先,如果s[0:i]本身是一个回文串,那么不需要分割,dp[i] = 0;如果s[0:i]不是回文串,那么我们需要枚举以s[i]结尾的回文串,从1到i的索引j原创 2020-12-03 14:59:06 · 242 阅读 · 0 评论 -
leetcode131. 分割回文串
题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]思路:回溯 对于一个长度为l字符串,我们截取前i个字符(0<i<=l),若前i个字符组成的子串是回文串,则递归截取剩下的子串。代码:class Solution(object): def partition(self, s): """ :原创 2020-11-27 14:47:09 · 116 阅读 · 0 评论 -
leetcode130. 被围绕的区域
题目:给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果两个元素在原创 2020-11-25 11:18:01 · 95 阅读 · 0 评论 -
leetcode129. 求根到叶子节点数字之和
题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3]输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.示例 2:输入: [4,原创 2020-11-24 17:45:19 · 163 阅读 · 0 评论 -
leetcode128. 最长连续序列
题目:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9提示:0 <= nums.length <= 104-109 <= n原创 2020-11-24 16:39:53 · 553 阅读 · 0 评论 -
leetcode127. 单词接龙
题目:给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”,en原创 2020-11-24 15:39:47 · 137 阅读 · 0 评论 -
leetcode126. 单词接龙 II
题目:给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换后得到的单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord =原创 2020-11-24 14:52:07 · 148 阅读 · 0 评论 -
leetcode125. 验证回文串
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路1: 把字符串里的非数字字母的字符剔除,然后对称比较.思路2:双指针 一个指针从前往后,另一个指针从后往前,遇到非数字字母的字符就跳过,比较指针所指的字符是否相等。代码1:原创 2020-11-19 15:29:10 · 81 阅读 · 0 评论 -
leetcode124. 二叉树中的最大路径和
题目:给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入:[1,2,3]输出:6示例 2:输入:[-10,9,20,null,null,15,7]输出:42思路:递归。 参考官方题解 为每一个节点定义一个最大贡献值,表示以该节点为根节点的子树中,经过该节点的最大路径和。根据这个定义,空节点的贡献为0,非空节点的贡献是节点值加上左右子节点原创 2020-11-18 17:33:31 · 126 阅读 · 0 评论 -
leetcode123. 买卖股票的最佳时机 III
题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格原创 2020-11-17 17:14:01 · 106 阅读 · 0 评论 -
leetcode122. 买卖股票的最佳时机 II
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股原创 2020-11-16 21:08:13 · 82 阅读 · 0 评论 -
leetcode121. 买卖股票的最佳时机
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例 2原创 2020-11-12 17:19:29 · 83 阅读 · 0 评论 -
leetcode120. 三角形最小路径和
题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。示例:给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。思路:动态规划因为每一层都依赖原创 2020-11-12 16:44:55 · 118 阅读 · 1 评论 -
leetcode119. 杨辉三角 II
题目:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]思路:改变上一题递归的返回值即可。代码:class Solution(object): def getRow(self, rowIndex): """ :type rowIndex: int :rtype: List[int] """原创 2020-11-12 15:26:27 · 184 阅读 · 1 评论 -
leetcode118. 杨辉三角
题目:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路:递归与非递归都能做。代码:递归class Solution(object): def generate(self, numRows): """ :type numRows: int原创 2020-11-12 15:09:58 · 75 阅读 · 0 评论 -
leetcode117. 填充每个节点的下一个右侧节点指针 II
题目:给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1,2,3,4,5,null,原创 2020-11-11 22:20:40 · 113 阅读 · 0 评论 -
leetcode116. 填充每个节点的下一个右侧节点指针
题目:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右原创 2020-10-12 20:30:27 · 213 阅读 · 0 评论 -
leetcode115. 不同的子序列
题目:给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:S = “rabbbit”, T = “rabbit”输出:3解释:如下图所示, 有 3 种可以从 S 中得到 “rabbit” 的方案。(上箭头符号 ^ 表示选取原创 2020-10-10 16:37:10 · 97 阅读 · 0 评论 -
leetcode114. 二叉树展开为链表
题目:给定一个二叉树,原地将它展开为一个单链表。示例:给定二叉树将其展开为:思路:若根节点不为空:找到根节点的左子树的最右节点,将根节点的右子树挂在该节点的右子树根节点的右子树指向根节点的左子树,左子树置空根节点移动到根节点的右节点重复上述过程直到根节点为空。示例:……非递归代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, va原创 2020-10-10 11:26:30 · 112 阅读 · 0 评论 -
题目:113. 路径总和 II
题目:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,返回:[[5,4,11,2],[5,8,4,5]]思路:回溯。代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x原创 2020-09-17 15:55:12 · 108 阅读 · 0 评论 -
leetcode112. 路径总和
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。思路:深搜。代码:# Definition for a binary tree node.# class TreeNode(object):# def __ini原创 2020-09-09 09:37:08 · 108 阅读 · 0 评论 -
leetcode111. 二叉树的最小深度
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2.思路:深搜。 递归函数返回当前节点的最小深度。代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# s原创 2020-09-04 15:18:40 · 97 阅读 · 0 评论