LeetCode 671. 二叉树中第二小的节点
文章目录
- 1. 题目信息
- 2. 解题
- 2.1 递归查找
- 2.2 改循环
1. 题目信息
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。
给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
示例 1:输入: 2/ \2 5/ \5 7输出: 5
说明: 最小的值是 2 ,第二小的值是 5 。
示例 2:输入: 2/ \2 2输出: -1
说明: 最小的值是 2, 但是不存在第二小的值。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-minimum-node-in-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
- 根节点是最小的,依次查找每个节点是否比最小的大
- 并更新找到的第二小的数组
2.1 递归查找
class Solution {public:int findSecondMinimumValue(TreeNode* root) {if(!root)return -1;int minNum = root->val;long secMinNum = LONG_MAX;findSec(root,minNum,secMinNum);if(secMinNum != LONG_MAX)return secMinNum;return -1;}void findSec(TreeNode* root, int &minNum, long &secMinNum){if(!root)return;if(root->val > minNum && root->val < secMinNum){secMinNum = root->val;}findSec(root->left,minNum,secMinNum);findSec(root->right,minNum,secMinNum);}
};
2.2 改循环
前序循环
class Solution {public:int findSecondMinimumValue(TreeNode* root) {if(!root)return -1;int minNum = root->val;long secMinNum = LONG_MAX;stack<TreeNode*> stk;while(root || !stk.empty()){while(root){stk.push(root);if(root->val > minNum && root->val < secMinNum)secMinNum = root->val;root = root->left;}root = stk.top()->right;stk.pop();}if(secMinNum != LONG_MAX)return secMinNum;return -1;}
};
LeetCode 671. 二叉树中第二小的节点相关推荐
- 671. 二叉树中第二小的节点
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个. 更正式地说,root.val = mi ...
- 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 访问. 给定一个非空特殊的二叉树,每个节点都是正数,并且每 ...
- [LeetCode]124. 二叉树中的最大路径和(java实现)递归
[LeetCode]124. 二叉树中的最大路径和(java实现)递归 1. 题目 2. 读题(需要重点注意的东西) 3. 解法 4. 可能有帮助的前置习题 5. 所用到的数据结构与算法思想 6. 总 ...
- 二叉树中如何求根节点到任意节点的路径?
二叉树中如何求任一节点的路径呢? 思路 使用先序遍历,处理的时候让节点入栈,并且加上标志位即可. 使用另外的result保存最终的路径. 函数 void pre_order(TreeNode * no ...
- 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案
牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...
- 在二叉树中找到两个节点的最近公共祖先(C++)
在二叉树中找到两个节点的最近公共祖先 描述 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...
最新文章
- Silverlight开发中遇到的几个小问题
- ICML2020 | PGFS:如何保证生成分子是可合成的?强化学习来帮忙
- 《LeetCode力扣练习》第2题 C语言版 (做出来就行,别问我效率。。。。)
- Java四种输出语句
- [html] 实现一个页面锁屏的功能
- arcgis 经纬度转大地坐标_【干货】坐标系统与投影变换及在ArcGIS中的应用
- 进入路由器boot的方式
- trados 2007 2009 共用一个LICENSE服务器
- Linux中级之ansible概念及hoc命令行调用模式
- linux gnu编译器下载,GNU Compiler Collection(gcc编译器)下载_GNU Compiler Collection(gcc编译器)官方下载-太平洋下载中心...
- IPOP-CMA-ES:一种重启CMA-ES
- linux svn e210003,svnadmin load 遇到E125005 的错误
- python编解码的字节与字符串相互转换
- 看黄天鹅如何下一颗高端鸡蛋?
- Oracle 12C Sharding分片数据库
- 小白也能看懂的零知识证明与zk-SNARKs
- android adb 电池电量,adb 查看电池状态信息。详解
- java实现数组的奇偶数互换
- python开发的项目管理软件_10 个超好用的免费开源项目管理软件
- idea右侧maven依赖飘红解决办法