671. Second Minimum Node In a Binary Tree(二叉树中第二小的节点)

手把手教你学Simulink--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析 本文介绍了使用Simulink仿真多旋翼无人机在风扰动下稳定性的方法。通过构建包含飞行器动力学模型、PID控制系统和环境模拟模块的仿真系统,分析了无人机在不同风速条件下的飞行性能。详细说明了从创建模型、设置动力学方程、设计PID控制器到添加风扰动模型的完整流程,并提供了性能评估指标。该方法可用于验证控制系统有效性,优化飞行稳定性参数,为无人机控制系统的设计和调试提供参考。 阅读详情

题目描述

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。

给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
在这里插入图片描述

方法思路

Approach #1: Brute Force [Accepted]
raverse the tree with a depth-first search, and record every unique value in the tree using a Set structure uniques.

Then, we’ll look through the recorded values for the second minimum. The first minimum must be root.val\text{root.val}root.val.

class Solution{
    //Runtime: 2 ms, faster than 51.91%
    //Memory Usage: 36.9 MB, less than 19.37%
    private Set<Integer> set;
    public int findSecondMinimumValue(TreeNode root){
        set = new HashSet<>();
        dfs(root);
        int min1 = root.val;
        long ans = Long.MAX_VALUE;
        for (int v : set) {
            if (min1 < v && v < ans) ans = v;
        }
        return ans < Long.MAX_VALUE ? (int) ans : -1;
    }
    
    public void dfs(TreeNode root){
        if(root != null){
            set.add(root.val);
            dfs(root.left);
            dfs(root.right);
        }
    }
}

Approach2:
Let min1 = root.val\text{min1 = root.val}min1 = root.val. When traversing the tree at some node, node\text{node}node, if node.val > min1\text{node.val > min1}node.val > min1, we know all values in the subtree at node\text{node}node are at least node.val\text{node.val}node.val, so there cannot be a better candidate for the second minimum in this subtree. Thus, we do not need to search this subtree.

Also, as we only care about the second minimum ans\text{ans}ans, we do not need to record any values that are larger than our current candidate for the second minimum, so unlike Approach #1 we can skip maintaining a Set of values(uniques) entirely.

class Solution {
    //Runtime: 1 ms, faster than 100.00%
    //Memory Usage: 36.6 MB, less than 85.86% 
    int min1;
    long ans = Long.MAX_VALUE;

    public void dfs(TreeNode root) {
        if (root != null) {
            if (min1 < root.val && root.val < ans) {
                ans = root.val;
            } else if (min1 == root.val) {
                dfs(root.left);
                dfs(root.right);
            }
        }
    }
    public int findSecondMinimumValue(TreeNode root) {
        min1 = root.val;
        dfs(root);
        return ans < Long.MAX_VALUE ? (int) ans : -1;
    }
}
PHP实现获取本机ip及mac地址​(附完整源码) 阅读详情

相关推荐

Localizing LabVIEW Application to Different Languages

本文探讨了LabVIEW应用程序的多语言本地化实现方案。文章首先分析了LabVIEW对多语言的支持现状,指出其默认仅支持ANSI编码,对Unicode支持有限,且仅适配中英法德日韩六种语言。然后重点介绍了JKISimpleLocalization工具包的使用方法,该工具能导出/导入JSON词典文件,实现界面语言的实时切换。文章还结合实际工程案例,分析了该方案的局限性:部分控件不可翻译、切换速度较慢(33个界面需50秒)、小语种支持不足等。最后提供了完整的应用流程和工具包附件,包括词典文件转换工具和工程案例。

2301_80383260的博客 1409

leetcode 671. Second Minimum Node In a Binary Tree

方法一:用一个set存储遍历二叉树的值,很常规的方法。 方法二:用递归。一开始屡不清关系,总感觉这个函数的返回值是第二小的值呀,怪怪的,这可怎么返回,我再过程中调用的时候是需要它返回子树中最小的呀。其实设定递归的条件就可以,如果当前子节点的值与父节点的值相等那么就递归下去,返回的虽然是子树的第二小的值,但也是对应的想要的子树的最小值。 class Solution { public int...

xiaobailaji的博客 327

别再到处找了!2024最新银河麒麟V10全版本(飞腾/龙芯/兆芯)官方下载与安装保姆级教程

本文提供2024年银河麒麟V10操作系统全版本(飞腾/龙芯/兆芯)的官方下载与安装保姆级教程,涵盖版本选择、镜像获取、启动盘制作及安装优化等关键步骤,助您高效部署国产操作系统。

weixin_26846533的博客 486

hdu-1710

Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18570Accepted Submission(s): 7672 Problem Description A binary tree is a finite set of vertices that is either empty or...

qq_42273272的博客 222

对冲策略与马丁结合ea的编程实践(五)核心是把两个品种合成一个新品种

在外汇、数字货币、期货交易甚至赌博中,马丁策略、网格策略是最常用的策略,也是最容易被理解的策略,但是如何克服单边行情、极端行情,是使用马丁策略最为头疼的事情,如加大间距、加大资金量,只能缓解,并不能根本解决这样的情况,所以使用时大部分时候都心里没底。 有没有一种正确的思路,让行情控制在震荡范围以内呢,这是今天我要向大家分享的一个思路,那就是对冲。大家看下图: 大家可以看到欧美(EURUSD)和镑美(GBPUSD),这两个品种,大部分时候走势是一致的,那么我们有没有可能把他们两个品种进行一下合成,比如买0.

omidsky的博客 3740

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 349

671.second-minimum-node-in-a-binary-tree

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

qq_26000415的博客 243

汽车OBD接口实战:如何用STM32读取CAN总线数据(附完整代码)

本文详细介绍了如何利用STM32微控制器通过汽车OBD接口读取CAN总线数据的完整实战方案。内容涵盖硬件连接(如OBD引脚定义与TJA1050收发器接线)、STM32的CAN外设初始化与滤波器配置,并深入解析OBD-II诊断协议,演示了如何请求和解析发动机转速、车速等关键数据。文末提供了构建稳定数据读取系统的代码框架与错误处理建议,为嵌入式开发者和汽车电子爱好者提供了从零到一的实践指南。

9q8w7e6r5的博客 299

HDU1710二叉树后序遍历

Problem Description A binary tree is a finite set of vertices that is either empty or consists of a root r and two disjoint binary trees called the left and right subtrees. There are three most impor...

salmonwilliam的博客 714

图自编码器(GAE)与变分图自编码器(VGAE)

在学习图自编码器之前先了解一下自编码器与变分自编码器。

小鱼的小窝 1万+

华为用自研的MetaERP替换全球顶级的SAP ERP系统,其难度与风险远超一次普通的技术升级,它是一场战略级的、涉及业务筋骨的系统性工程

华为成功用自研MetaERP替换SAP系统,这是一项极具挑战的战略工程。面临四大难度:业务复杂度高(170多国业务)、数据迁移量大(20年历史数据)、技术集成复杂(重构生态系统)、人员适应周期长。同时伴随四大风险:业务中断、数据失真、成本超支、供应链协同问题。华为成功的关键在于:生存压力驱动的战略决心、强大的软件研发能力、以自身业务为试验场、分步实施策略。这一案例证明中国企业能攻克高端软件壁垒,但对大多数企业而言,核心系统替换需谨慎评估风险,建议采用渐进式替代策略。

金牌架构师 535

LeetCode题解:Binary Tree Preorder Traversal

Binary Tree Preorder Traversal Given a binary tree, return the preorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [1,2,3].

Magi Su的技术回收站 1265

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

671-二叉树中第二小的节点(Second Minimum Node In a Binary Tree)

题目描述 中文 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点 的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。 英文 Given a non-empty special binary tree consisting of nodes...

li1376417539的博客 183

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Leetcode 671.二叉树中第二小的节点(Second Minimum Node In a Binary Tree)

Leetcode 671.二叉树中第二小的节点 1 题目描述(Leetcode题目链接)   给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。 输入: 2 / \ 2 5 / \ 5 7 输出: 5 说明: 最小的值是 2 ,第二小的值是 5 。 输入:

qq_39378221的博客 212

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Leetcode 671. Second Minimum Node In a Binary Tree(二叉树中第二小的节点)

Second Minimum Node In a Binary Tree Given a non-empty special binary tree consisting of nodes with the non-negative value, where each node in this tree has exactly two or zero sub-node. If the node ...

秀秀的奇妙旅行 265

LeetCode 671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree) 9

671. 二叉树中第二小的节点 671. Second Minimum Node In a Binary Tree 题目描述 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1。 每日一算法2019/...

weixin_30852451的博客 110

[Swift]LeetCode671. 二叉树中第二小的节点 | Second Minimum Node In a Binary Tree

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/streng...

weixin_30551947的博客 105

LeetCode 671. Second Minimum Node In a Binary Tree(二叉树中第二小的节点)

给定一个非空特殊的二叉树,每个节点都是正数,并且**每个节点的子节点数量只能为 2 或 0**。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 root.val = min(root.left.val, root.right.val) 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。 示例 1: 输入: 2 ...

肉丸不肉 453

LeetCode 671. Second Minimum Node In a Binary Tree二叉树中第二小的节点 (C++)

题目: Given a non-empty special binary tree consisting of nodes with the non-negative value, where each node in this tree has exactlytwoorzerosub-node. If the node has two sub-nodes, then this node...

weixin_34144450的博客 181

(Java)leetcode-671 Second Minimum Node In a Binary Tree(二叉树中第二小的节点)

后序遍历...

不思量 302

leetcode 671. Second Minimum Node In a Binary Tree 二叉树中第二小的节点-耗时100%

本文提出了一种在二叉树中查找第二小节点的有效方法。通过层序遍历(BFS)实现,当遇到节点值不等于根节点值时,将其作为候选值,并跳过该节点的子树遍历以提高效率。算法使用队列进行遍历,维护一个变量记录当前第二小的候选值。最终返回该候选值,若无则返回-1。这种方法在保证正确性的同时优化了时间复杂度。

邹九的个人博客 271

LeetCode——671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree)[简单]——分析及代码(Java)

LeetCode——671. 二叉树中第二小的节点[Second Minimum Node In a Binary Tree][简单]——分析及代码[Java]一、题目二、分析及代码1. 遍历 + 剪枝(1)思路(2)代码(3)结果三、其他 一、题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。 更正式地说,root.val = min(root.left.val

江南土豆的博客 321

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

问题 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。 给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。 输入: 2 / \ 2 5 / \ 5 7 输出: 5 说明: 最小的值...

比特飞 1万+

leetcode 671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree) java beat 100%

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。  给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。 示例 1: 输入: 2 / \ 2 5 / \ 5 7 输出: 5 说明: 最小的值是...

一叶之修的博客 448

LeetCode - 671 - 二叉树中第二小节点(second-minimum-node-in-a-binary-tree)

一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录二 前言三 解题及测试四 LeetCode Submit五 解题思路二 前言 难度:简单涉及知识:树题目地址:https://leet...

weixin_41806099的博客 189

LeetCode //C - 671. Second Minimum Node In a Binary Tree

【代码】LeetCode //C - 671. Second Minimum Node In a Binary Tree。

Made in Code 1387
上一篇: 230. Kth Smallest Element in a BST
下一篇: 998. Maximum Binary Tree II(最大二叉树II)
N.C_IPOC_BUPT
博客等级 码龄9年 3粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值