[LeetCode]671. 二叉树中第二小的节点(递归)
题目
给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值。
给出这样的一个二叉树,你需要输出所有节点中的第二小的值。如果第二小的值不存在的话,输出 -1 。
题解
有趣的一道题。
- 题目变成找出子树中最小的大于根结点值的节点值,否则-1
- 要充分利用该树的子节点值一定>=根节点的信息。
- 具体思路在代码注释。
代码
class Solution {
    public int findSecondMinimumValue(TreeNode root) {
        return helper(root,root.val);
    }
    public int helper(TreeNode root,int minVal){
        //叶子端点
        if(root==null){
            return -1;
        }
        //如果当前结点值>根节点,那么不用再遍历它的子节点,直接返回该值
        if(root.val>minVal){
            return root.val;
        }
        //否则,即当前结点值==根节点,则需要在两棵子树找目标值结点
        int l=helper(root.left,minVal);
        int r=helper(root.right,minVal);
        //如果两棵子树均存在大于最小值的节点,那么返回较小的那一个
        if(l!=-1&&r!=-1){
            return Math.min(l,r);
        }else{//否则,其余情况均返回较大的那一个
            return Math.max(l,r);
        }
    }
}
[LeetCode]671. 二叉树中第二小的节点(递归)的更多相关文章
- [LeetCode] 671. 二叉树中第二小的节点 ☆(递归 合并)
		描述 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树,你需要输出所有 ... 
- LeetCode 671. 二叉树中第二小的节点(Second Minimum Node In a Binary Tree) 9
		671. 二叉树中第二小的节点 671. Second Minimum Node In a Binary Tree 题目描述 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 ... 
- Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
		671. 二叉树中第二小的节点 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的 ... 
- Leetcode 671.二叉树中第二小的节点
		二叉树中第二小的节点 给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0.如果一个节点有两个子节点的话,那么这个节点的值不大于它的子节点的值. 给出这样的一个二叉树 ... 
- 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 eac ... 
- [Swift]LeetCode671. 二叉树中第二小的节点 | Second Minimum Node In a Binary Tree
		Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ... 
- LeetCode671. 二叉树中第二小的节点
		题目 纯暴力 1 class Solution { 2 public: 3 vector<int>ans; 4 int findSecondMinimumValue(TreeNode* r ... 
- [LeetCode] Second Minimum Node In a Binary Tree 二叉树中第二小的结点
		Given a non-empty special binary tree consisting of nodes with the non-negative value, where each no ... 
- C#LeetCode刷题之#671-二叉树中第二小的节点(Second Minimum Node In a Binary Tree)
		问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4100 访问. 给定一个非空特殊的二叉树,每个节点都是正数,并且每 ... 
随机推荐
- JavaScript基础-02
			1. 六种数据类型: string字符串:number数值:boolean布尔值:null空值:undefined 未定义:object对象 基本数据类型(值类型): string字符串:number ... 
- 实战分享丨MySQL 与Django版本匹配相关经验
			摘要:关于MySQL 与Django版本匹配相关知识的经验分享. run: (env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python ... 
- JavaScript学习系列博客_10_JavaScript中的while语句
			循环语句 - while循环 - 语法: while(条件表达式){ 语句... } - 执行流程: while语句在执行时,会先对条件表达式进行求值判断, 如果判断结果为false,则终止循环 如果 ... 
- 代码生成器辅助类Stub、StubQueue与CodeletMark
			在解释执行的情况下需要一些类来支持代码生成的过程. 1.InterpreterCodelet与Stub类 Stub类的定义如下: class Stub VALUE_OBJ_CLASS_SPEC { p ... 
- Lua语言15分钟快速入门
			转载自: https://blog.csdn.net/qq_15437667/article/details/75042526 -- 单行注释 --[[ [多行注释] --]] ---------- ... 
- Charles 断点修改Response
			前言: 我们可以通过map功能进行重定向,但如果同一个域名进行的是不同请求与返回.此时map在这里就不适用了. 我们可以通关对某一请求进行断点,在进行修改请求或者返回.这样就可以满足我们的需求了. 一 ... 
- Lombok 作者因兼容问题讨伐 IntelliJ IDEA(官方已妥协)
			今天(08/26),你看到本文应该是昨天了. 栈长上班打开电脑,按往常一样打开 IntelliJ IDEA 正准备撸码,突然收到 IDEA 2020.2.1 的更新提醒: 我现在用的还是 2020.1 ... 
- 为什么golang中不存在三元运算符
			三元运算符广泛存在于其他语言中,比如: python: val = trueValue if expr else falseValue javascript: const val = expr ? t ... 
- Tiled and Unity
			https://www.mapeditor.org https://assetstore.unity.com/packages/tools/integration/tiled-to-unity-172 ... 
- Django 入门介绍
			Django介绍 Django框架是PythonWeb三大主流框架之一,以其功能强大全面而受到众多开发者追捧,现如今Django已经更新到3版本,但是并不推荐使用,更多建议使用1版本. Django版 ... 
