LeetCode 671. 二叉树中第二小的节点
发布日期:2021-07-01 03:14:05
浏览次数:2
分类:技术文章
本文共 1637 字,大约阅读时间需要 5 分钟。
文章目录
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; stackstk; 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; }};
转载地址:https://michael.blog.csdn.net/article/details/100550016 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月23日 18时53分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python开发总结五
2019-05-02
EL、JSTL、servlet
2019-05-02
2 QCreator调试并查看源码
2019-05-02
4 Qt 之 pro 配置多个子工程/子模块
2019-05-02
12 Qt 之 QToolBox、QLCDNumber
2019-05-02
32 Qt 之绘图之绘制一个漂亮的西瓜
2019-05-02
33 Qt 之绘图之绘制卡通蚂蚁
2019-05-02
34 Qt 之绘图之绘制时钟
2019-05-02
35 Qt 之绘制闪烁文本
2019-05-02
QT知识点总结(一)
2019-05-02
QT知识点总结(二)
2019-05-02
Unix环境变量--文件操作
2019-05-02
Unix环境变量--进程管理
2019-05-02
Unix环境变量--信号(一)
2019-05-02
Unix环境变量--线程基础
2019-05-02
Unix环境变量--缓冲区
2019-05-02
Unix环境变量--POSIX异步I/O
2019-05-02
UNIX环境变量--存储映射I/O
2019-05-02
tinyhttpd源码学习1
2019-05-02
Plus One
2019-05-02