671. 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 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. 二叉树中第二小的节点相关推荐
- LeetCode 671. 二叉树中第二小的节点
文章目录 1. 题目信息 2. 解题 2.1 递归查找 2.2 改循环 1. 题目信息 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点 ...
- leetcode刷题之 树(14)-递归:找出二叉树中第二小的节点
[LeetCode] Second Minimum Node In a Binary Tree 二叉树中第二小的结点 Given a non-empty special binary tree con ...
- LeetCode简单题之二叉树中第二小的节点
题目 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,即 root.val ...
- 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,root.val = mi ...
- C#LeetCode刷题之#671-二叉树中第二小的节点(Second Minimum Node In a Binary Tree)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4100 访问. 给定一个非空特殊的二叉树,每个节点都是正数,并且每 ...
- 二叉树中如何求根节点到任意节点的路径?
二叉树中如何求任一节点的路径呢? 思路 使用先序遍历,处理的时候让节点入栈,并且加上标志位即可. 使用另外的result保存最终的路径. 函数 void pre_order(TreeNode * no ...
- 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案
牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...
- 在二叉树中找到两个节点的最近公共祖先(C++)
在二叉树中找到两个节点的最近公共祖先 描述 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...
- 二叉树中任意两个节点的距离
题目: 一个普通二叉树,如何找到两个给定节点之间的距离? ,其中二叉树中每个结点的值都不相同 思路:两个节点之间的最短路径一定会经过两个节点的最小公共祖先,所以我们可以用LCA(最低公共祖先)的解法. ...
最新文章
- 【TensorFlow2.0】(1) tensor数据类型,类型转换
- python:LEGB标识符解析顺序
- Programming asp.net笔记--第三章 Controls: Fundamental Concepts
- 联想利泰的一道做出来就给月薪7K的面试题--交通灯管理系统
- NoSQL分布式数据库的独家见解- Adam Fowler
- Linux基本命令解析(1)
- 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
- 跑步与读书都废掉了...工作目前也在换新的.
- [自动调参]深度学习模型的超参数自动化调优详解
- window ftp open命令打不开_Centos7上搭建ftp
- http中响应状态码表示的意义?
- PPT双屏抽奖,大气,能Hold住全场!与其它PPT内容可融为一体,实现无缝切换!
- c#连续打印问题,即进销存销售单打印问题完美解决
- 海思码率控制器各参数说明
- 孤儿进程与僵尸进程产生及其处理
- 开发板实战篇4 RGB565 LCD刷颜色数据
- 计算机怎么快速查找应用,win10系统如何快速查找应用?win10系统快速查找应用的方法...
- 上海市政府颁布智能汽车牌照,蔚来汽车成首批获此资格企业
- 机器学习中的三种误差
- Hadoop详解以及历史版本介绍