LeetCode简单题之二叉树中第二小的节点

news/2024/11/20 10:45:45/

题目

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。
更正式地说,即 root.val = min(root.left.val, root.right.val) 总成立。
给出这样的一个二叉树,你需要输出所有节点中的 第二小的值 。
如果第二小的值不存在的话,输出 -1 。
示例 1:
在这里插入图片描述

输入:root = [2,2,5,null,null,5,7]
输出:5
解释:最小的值是 2 ,第二小的值是 5 。
示例 2:
在这里插入图片描述

输入:root = [2,2,2]
输出:-1
解释:最小的值是 2, 但是不存在第二小的值。
提示:
树中节点数目在范围 [1, 25] 内
1 <= Node.val <= 2^31 - 1
对于树中每个节点 root.val == min(root.left.val, root.right.val)
来源:力扣(LeetCode)

解题思路

  在这个题目的排序中,相等的值是具有相同位序的,所以需要对所以的值去重,然后再找最小值和第二小的值。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def findSecondMinimumValue(self, root: TreeNode) -> int:temp=[]def preorder(root):if root:temp.append(root.val)preorder(root.left)preorder(root.right)preorder(root)s=set(temp)  #去重if len(s)==1:return -1first_min=float('inf')second_min=float('inf')for i in s:  #遍历更新最小值和第二小的值if i<first_min:second_min=first_minfirst_min=ielif i<second_min:second_min=ireturn second_min

在这里插入图片描述


http://www.ppmy.cn/news/605666.html

相关文章

pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

squeeze的用法主要就是对数据的维度进行压缩或者解压。 先看torch.squeeze() 这个函数主要对数据的维度进行压缩&#xff0c;去掉维数为1的的维度&#xff0c;比如是一行或者一列这种&#xff0c;一个一行三列&#xff08;1,3&#xff09;的数去掉第一个维数为一的维度之后就变…

VS Code搭建C/C++开发环境超详细教程

目录一、下载配置MinGW1. 下载解压 MinGW2. 配置环境变量3. 测试是否配置成功二、安装 C/C 插件三、第一个程序四、相关插件推荐1. Visual Studio IntelliCode2. Code Runner一、下载配置MinGW 1. 下载解压 MinGW 下载地址&#xff1a;https://sourceforge.net/projects/mingw…

SWT Image 和ImageData的相互转换

ImageData 转 Image //arcPiclocate图片绝对路径 ImageData data new ImageData(arcPiclocate); Image image1 new Image(null, data); //或者 Display display Display.getCurrent(); Image image1 new Image(display , data); Image 转 ImageData 使用getImageData()方…

centos7 挂载未分配的空间新增卷

一、系统环境 操作系统&#xff1a;Centos 7 已配置环境&#xff1a;空 二、磁盘挂载到新目录&#xff08;磁盘挂载&#xff09; 2.1 查找新硬盘 查看机器所挂硬盘及分区情况&#xff1a; fdisk -l 复制 红框圈中的即是本次要挂载的磁盘&#xff0c;与 /dev/sda 和 /de…

LeetCode简单题之重新格式化电话号码

题目 给你一个字符串形式的电话号码 number 。number 由数字、空格 ’ 、和破折号 ‘-’ 组成。 请你按下述方式重新格式化电话号码。 首先&#xff0c;删除 所有的空格和破折号。 其次&#xff0c;将数组从左到右 每 3 个一组 分块&#xff0c;直到 剩下 4 个或更少数字。剩下…

【实战】 JWT、用户认证与异步请求(上) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(四)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求1.login2.middleware of json-server3.jira-dev-tool&#xff08;imooc-jira-tool&#xff09;安装问…

关于pytorch--embedding的问题

使用Pytorch实现NLP深度学习 Word Embeddings: Encoding Lexical Semantics 在pytorch里面实现word embedding是通过一个函数来实现的:nn.Embedding 在深度学习1这篇博客中讨论了word embeding层到底怎么实现的&#xff0c; 评论中问道&#xff0c;word embedding具体怎么做的…

pytorch中的transpose()

维度的相互调换 运行结果 batch_es和batch_ee输出的结果是一样的。原始的transpose参数(默认的参数)为(0,1,2)&#xff0c;这个转置相当于将第一个坐标与第二坐标进行了互换。