题目

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 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

LeetCode简单题之二叉树中第二小的节点相关推荐

  1. leetcode刷题之 树(14)-递归:找出二叉树中第二小的节点

    [LeetCode] Second Minimum Node In a Binary Tree 二叉树中第二小的结点 Given a non-empty special binary tree con ...

  2. LeetCode 671. 二叉树中第二小的节点

    文章目录 1. 题目信息 2. 解题 2.1 递归查找 2.2 改循环 1. 题目信息 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点 ...

  3. 二叉树中第二小的节点

    给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,root.val = mi ...

  4. 671. 二叉树中第二小的节点

    给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,root.val = mi ...

  5. C#LeetCode刷题之#671-二叉树中第二小的节点(Second Minimum Node In a Binary Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4100 访问. 给定一个非空特殊的二叉树,每个节点都是正数,并且每 ...

  6. LeetCode简单题之二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15, ...

  7. LeetCode简单题之比赛中的配对次数

    题目 给你一个整数 n ,表示比赛中的队伍数.比赛遵循一种独特的赛制: 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对.总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮. ...

  8. LeetCode简单题之字符串中的单词数

    题目 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John&q ...

  9. LeetCode简单题之数组中两元素的最大乘积

    题目 给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值. 请你计算并返回该式的最大值. 示例 1: 输入:nums = ...

最新文章

  1. 小D学blend-----如何创建自定义的Tooltip控件
  2. python使用matplotlib可视化3D柱状图(3D histogram、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为z、改变3d图观察的角度
  3. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用nfactors参数指定抽取的因子的个数、fa函数因子分析结果解读(Extracting common facto
  4. clockdiff-检测两台linux主机的时间差
  5. 【渝粤题库】国家开放大学2021春2108刑法学(2)答案
  6. 389 find the difference
  7. 04.MyBatis别名的设置和类型转换器
  8. %3c php $str1=,ThinkPHP5.0.215.1.* 代码执行和命令执行漏洞利用
  9. testVC.modalPresentationStyle = UIModalPresentationFormSheet; 更改 VC大小
  10. c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
  11. $(obj).each 和 $.each() 区别
  12. javase转javaee(java web)
  13. 计算机做游戏软件视频,电脑上录制游戏视频用什么软件好?专业的游戏录制软件推荐...
  14. elasticsearch怎么实现拼音首字母查询
  15. 基于JAVA的GUI编程的的迷宫游戏 2020-12-15
  16. ibm 服务器 阵列 加硬盘,IBM服务器增加硬盘
  17. 华大HC32F460系列填坑之USART
  18. 华为手机设置页面黑色_华为手机微信猫和老鼠主题皮肤怎么设置 ?超个性主题等你来设置!...
  19. 5G工业网关下工业自动化设备远程监控系统
  20. Vue项目在标签中如何书写多个内敛style样式

热门文章

  1. rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
  2. 2022-2028年中国纤维增强聚合物行业市场调查研究及发展前景规划报告
  3. Python2 与 Python3 区别
  4. Bert系列(三)——源码解读之Pre-train
  5. 一文告诉你Adam、AdamW、Amsgrad区别和联系 重点
  6. 关于正则表达式 \1 \2之类的问题
  7. LeetCode简单题之矩阵中的幸运数
  8. TVM开发三个示例分析
  9. 第四代自动泊车从APA到AVP技术
  10. Android中Messenger进程间通信