力扣hot100题解(python版41-43题)

41、二叉树的层序遍历

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

示例 1:

img

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000]
  • -1000 <= Node.val <= 1000

思路解答:

  1. 使用队列来存储每一层的节点,实现层序遍历。
  2. 从根节点开始,将根节点入队。然后循环遍历队列,每次取出队列中的节点,将其值加入结果列表,并将其非空子节点依次入队。
  3. 重复这个过程直到队列为空,即遍历完整棵树。
  4. 返回层序遍历的结果列表。
def levelOrder(self, root: Optional[TreeNode]) -> list[list[int]]:if not root:return []queue = collections.deque([root])result = []while queue:level_vales = []for _ in range(len(queue)):node = queue.popleft()level_vales.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)result.append(level_vales)return result

42、将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。

高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。

示例 1:

img

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

img

示例 2:

img

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums严格递增 顺序排列

思路解答:

  1. 选择根节点: 由于数组是升序排列的,可以选择中间元素作为根节点,这样可以保持树的高度平衡。
  2. 递归构建左右子树: 将数组分为左右两部分,分别递归构建左子树和右子树。
  3. 返回根节点: 最终返回根节点。
def sortedArrayToBST(self, nums: list[int]) -> Optional[TreeNode]:if not nums:return Nonemid = len(nums) // 2root = TreeNode(nums[mid])root.left = sortedArrayToBST(nums[:mid])root.right = sortedArrayToBST(nums[mid + 1:])return root

43、验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

img

输入:root = [2,1,3]
输出:true

示例 2:

img

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示:

  • 树中节点数目范围在[1, 104]
  • -231 <= Node.val <= 231 - 1

思路解答:

  1. 递归遍历: 通过递归遍历二叉树,同时传递当前节点应该满足的最小值和最大值范围。
  2. 判断条件: 在递归过程中,对于每个节点,判断其值是否在当前的最小值和最大值范围内。
  3. 返回结果: 如果所有节点都满足二叉搜索树的条件,则返回True;否则返回False。
def isValidBST(self, root: Optional[TreeNode]) -> bool:def isValid(node, min_val, max_val):if not node:  return Trueif not min_val < node.val < max_val:  return Falsereturn isValid(node.left, min_val, node.val) and isValid(node.right, node.val, max_val)return isValid(root, float('-inf'), float('inf'))  # 对于根节点,它的上下限为无穷大和无穷小 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2822247.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C#学习(十四)——垃圾回收、析构与IDisposable

一、何为GC 数据是存储在内存中的&#xff0c;而内存又分为Stack栈内存和Heap堆内存 Stack栈内存Heap堆内存速度快、效率高结构复杂类型、大小有限制对象只能保存简单的数据引用数据类型基础数据类型、值类型- 举个例子 var c new Customer{id: 123,name: "Jack"…

【PyTorch】成功解决AttributeError: ‘Tuple‘ object has no attribute ‘cuda‘

【PyTorch】成功解决AttributeError: ‘Tuple‘ object has no attribute ‘cuda‘ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&…

JAVASE初认识

1.初认识其结构 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义。类用来表示程序的一个组件&#xff0c;小程序或许只会有一个类。类的内容必须包含在花括号里面。 2.类&#xff1a;类中带有一个或多个方法。方法必须在类的内部声明。 3.方法&#xff1…

CAPL组装IPv4分片包的三种思路(2)

2、使用CAPL的函数自动生成一条完整的ICMPv4 Echo Request报文,然后把数据手动放入两个分片报文中 首先生成一条完整的icmp报文: ethernetPacket ppkt1;//icmpv4 echo requestbyte data[1] = {10};//icmpv4 echo request datappkt1.icmpv4.echo…

【JavaEE】_前端使用GET请求的queryString向后端传参

目录 1. GET请求的query string 2. 关于query string的urlencode 1. GET请求的query string 1. 在HttpServletRequest请求中&#xff0c;getParameter方法用于在服务器这边获取到请求中的参数&#xff0c;主要在query string中&#xff1b; query string中的键值对都是程序…

使用Python语言实现一个基于动态数组的序列队列

一、动态数组的实现 首先&#xff0c;我们需要创建一个DynamicArray类&#xff0c;该类将管理我们的动态数组。 动态数组能够动态地调整其大小&#xff0c;以容纳更多的元素。 目录 一、动态数组的实现 代码示例&#xff1a; 二、序列队列的实现 接下来&#xff0c;我…

Redis--持久化机制详解

什么是redis持久化&#xff1f; Redis持久化是将内存的数据持久化到磁盘上&#xff0c;防止Redis宕机或者断点的时候内存中的数据丢失&#xff0c;把内存中的数据写入到磁盘的过程叫持久化。 Redis持久化的方式&#xff1f; RDB&#xff08;Redis DataBase&#xff09;&…

图结构数据的构建-DGL库

官方文档 一、图的特点 同构性与异构性 相比同构图&#xff0c;异构图里可以有不同类型的节点和边。这些不同类型的节点和边具有独立的ID空间和特征&#xff1b;同构图和二分图只是一种特殊的异构图&#xff0c;它们只包括一种关系 节点与边 有向图一条边、无向图两条边、…

在Windows系统中启动Redis服务

前言 Redis是一个开源、高性能的键值对数据库&#xff0c;常用于缓存、消息队列等场景。本文将详细指导您如何在Windows系统上启动Redis服务。 第一步&#xff1a;确认Redis安装 确保您已经在Windows系统上成功安装了Redis。官方提供了预编译好的Windows版本&#xff0c;您可…

代码随想录算法训练营第三十二天 | 122.买卖股票的最佳时机 II,55. 跳跃游戏, 45.跳跃游戏 II[贪心算法篇]

代码随想录算法训练营第二十六天 LeetCode 122.买卖股票的最佳时机 II题目描述思路参考代码 LeetCode 55. 跳跃游戏题目描述思路参考代码 LeetCode 45.跳跃游戏 II题目描述思路参考代码 LeetCode 122.买卖股票的最佳时机 II 题目链接&#xff1a;122.买卖股票的最佳时机 II 文章…

如何在腾讯云上快速部署幻兽帕鲁/Palworld服务器?

如何在腾讯云上快速部署幻兽帕鲁/Palworld服务器&#xff1f; 准备工作&#xff1a;首先需要准备腾讯云账号和Steam账号。腾讯云账号适用于新老用户&#xff0c;而Steam账号则是因为幻兽帕鲁是一款Steam平台的游戏。此外&#xff0c;还需要购买一台腾讯云服务器&#xff0c;推荐…

Makefile从入门到项目编译实战(学习笔记)

1.make和makefile介绍 1. make make 是一个应用程序&#xff0c;位于 /usr/bin/make 目录下&#xff0c;make 有如下的功能&#xff1a; &#xff08;1&#xff09;解析源程序之间的依赖关系 &#xff08;2&#xff09;根据依赖关系自动维护编译工作 &#xff08;3&#xff09…

VS2019_连接 SqlServer 数据库

目录 1. 编写好 SQL 语句&#xff0c;存为文件 2. 将这个 SQL 文件直接拖到 VS 的桌面快捷键上面 3. 点击运行 4. 输入相关参数&#xff0c;连接 5. 点击运行&#xff0c;即可查出结果 6. 关闭 VS2019&#xff0c;再次执行2和3步 7. 历史 > 选择库 > 连接 8. 运行…

Charles抓包 - 安装、激活、证书配置

最近刚好又遇到了抓包的需求&#xff0c;之前一直使用 Fiddler 抓包&#xff0c;这几年一直听大家都在用 Charles 抓包&#xff0c;正好一起了解下&#xff08;一般建议掌握一种抓包方式即可&#xff0c;都可以解决同种需求场景&#xff09; 抓包 Fiddler抓包 Charles 下载、安…

杭电OJ 2045 不容易系列之(3)—— LELE的RPG难题 C++

思路&#xff1a;我先模拟了一下1&#xff0c;2&#xff0c;3的情况&#xff0c;对应的是3 6 6&#xff0c;模拟到4的时候就有感觉了&#xff0c;1是不受到任何制约的&#xff0c;2到n-1是收到了前面一个的制约&#xff0c;n受到了n-1与1的制约&#xff0c;那么就可以去判断4 …

Vue全家桶:vue2+vue3全部搞懂:第五篇,Vue的watch监视器

前提&#xff0c;建议先学会前端几大基础&#xff1a;HTML、CSS、JS、Ajax&#xff0c;不然不好懂 这一专栏知识将一次性将vue、vue2、vue3全部讲明白 一、何为watch监视器 其实我个人理解&#xff0c;就跟原本的表单的input事件一样&#xff0c;实时监视事件发生并同步更新数…

gcd+线性dp,[蓝桥杯 2018 国 B] 矩阵求和

一、题目 1、题目描述 经过重重笔试面试的考验&#xff0c;小明成功进入 Macrohard 公司工作。 今天小明的任务是填满这么一张表&#xff1a; 表有 &#xfffd;n 行 &#xfffd;n 列&#xff0c;行和列的编号都从 11 算起。 其中第 &#xfffd;i 行第 &#xfffd;j 个元素…

逆序字符串

逆序字符串 题目描述&#xff1a;解法思路&#xff1a;解法代码&#xff1a;运行结果&#xff1a; 题目描述&#xff1a; 输入⼀个字符串&#xff0c;写⼀个函数将⼀个字符串的内容逆序过来。 测试1&#xff1a; 输⼊&#xff1a;abcdef 输出&#xff1a;fedcba 测试2&#x…

《剑指 Offer》专项突破版 - 面试题 62 : 详解前缀树以及实现(C++)

目录 一、前缀树的基础知识 二、实现前缀树 一、前缀树的基础知识 前缀树&#xff0c;又称为字典树&#xff0c;它用一个树状的数据结构存储一个字典中的所有单词。如果一个字典中包含单词 "can"、"cat"、"come"、"do"、"i&qu…

python实现常见一元随机变量的概率分布

一. 随机变量 随机变量是一个从样本空间 Ω \Omega Ω到实数空间 R R R的函数&#xff0c;比如随机变量 X X X可以表示投骰子的点数。随机变量一般可以分为两类&#xff1a; 离散型随机变量&#xff1a;随机变量的取值为有限个。连续型随机变量&#xff1a;随机变量的取值是连…