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

解题思路

二叉树的根节点必为最小值,因此我们只需要遍历一遍二叉树,找出大于根节点的最小值即可

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {Integer res=null;public int findSecondMinimumValue(TreeNode root) {dfsFindSecondMinimumValue(root, root.val);return res==null?-1:res;}public void dfsFindSecondMinimumValue(TreeNode root,int tar) {if (root==null)  return;if(root.val>tar){res=res==null?root.val:Math.min(res, root.val);}dfsFindSecondMinimumValue(root.left,tar);dfsFindSecondMinimumValue(root.right,tar);}
}

671. 二叉树中第二小的节点相关推荐

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

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

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

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

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

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

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

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

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

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

  6. 二叉树中如何求根节点到任意节点的路径?

    二叉树中如何求任一节点的路径呢? 思路 使用先序遍历,处理的时候让节点入栈,并且加上标志位即可. 使用另外的result保存最终的路径. 函数 void pre_order(TreeNode * no ...

  7. 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案

    牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...

  8. 在二叉树中找到两个节点的最近公共祖先(C++)

    在二叉树中找到两个节点的最近公共祖先 描述   给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...

  9. 二叉树中任意两个节点的距离

    题目: 一个普通二叉树,如何找到两个给定节点之间的距离? ,其中二叉树中每个结点的值都不相同 思路:两个节点之间的最短路径一定会经过两个节点的最小公共祖先,所以我们可以用LCA(最低公共祖先)的解法. ...

最新文章

  1. 【TensorFlow2.0】(1) tensor数据类型,类型转换
  2. python:LEGB标识符解析顺序
  3. Programming asp.net笔记--第三章 Controls: Fundamental Concepts
  4. 联想利泰的一道做出来就给月薪7K的面试题--交通灯管理系统
  5. NoSQL分布式数据库的独家见解- Adam Fowler
  6. Linux基本命令解析(1)
  7. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
  8. 跑步与读书都废掉了...工作目前也在换新的.
  9. [自动调参]深度学习模型的超参数自动化调优详解
  10. window ftp open命令打不开_Centos7上搭建ftp
  11. http中响应状态码表示的意义?
  12. PPT双屏抽奖,大气,能Hold住全场!与其它PPT内容可融为一体,实现无缝切换!
  13. c#连续打印问题,即进销存销售单打印问题完美解决
  14. 海思码率控制器各参数说明
  15. 孤儿进程与僵尸进程产生及其处理
  16. 开发板实战篇4 RGB565 LCD刷颜色数据
  17. 计算机怎么快速查找应用,win10系统如何快速查找应用?win10系统快速查找应用的方法...
  18. 上海市政府颁布智能汽车牌照,蔚来汽车成首批获此资格企业
  19. 机器学习中的三种误差
  20. Hadoop详解以及历史版本介绍

热门文章

  1. c语言经典算法——查找一个整数数组中第二大数
  2. 从思维图到基础再到深入,java空间查询
  3. 实战HMM-Viterbi角色标注地名识别
  4. 使用Docker快速搭建Tensorflow开发环境
  5. Android_Event Bus 的基本用法
  6. HTTPS与MITM
  7. Android常用的一些make命令(转载)--不错
  8. 第七堂:NavigationController以及TabBarController
  9. Java03接口与内部类
  10. pytest自动化6:pytest.mark.parametrize装饰器--测试用例参数化