题目

给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 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);
}
}
}

最新文章

  1. 答辩HTML5
  2. CSS3——3D旋转图(跑马灯效果图)
  3. bootstrap 3 中表单元素的写法 ---- 重点是 input file 元素的
  4. AX2012 XppCompiler create method动态创建方法并运行
  5. MordenPHP阅读笔记(一)——先跑再说,跑累了再走
  6. Centos安装firefox/chrome
  7. php基础语法学习汇总
  8. iOS指纹识别代码
  9. Java 执行终端命令实现,调用执行另外一个Java文件
  10. Oracle中的Union、Union All、Intersect、Minus
  11. 关于textarea的应用--onchage,onpropertychange,oninput
  12. 【Beta】阶段 第一次Daily Scrum Meeting
  13. luogu3233 世界树 (虚树)
  14. 【Clojure 基本知识】小技巧s
  15. u-boot之NAND启动与NOR启动的区别
  16. Docker : endpoint with name xxx already exists.
  17. 【刷题】洛谷 P4234 最小差值生成树
  18. Phpcms v9专题分类增加模板设置的方法
  19. Leetcode 23.Merge Two Sorted Lists Merge K Sorted Lists
  20. D3 data()

热门文章

  1. LOJ10048. 「一本通 2.2 练习 4」Censoring
  2. ms14-064漏洞复现
  3. 跟我一起学.NetCore之配置变更监听
  4. Jmeter(二十二) - 从入门到精通 - JMeter断言 - 下篇(详解教程)
  5. JavaScript学习系列博客_33_JavaScript String对象
  6. Dockerfile文件万字全面解析
  7. Go语言从入门到高薪之路(一)-- 初识与安装
  8. 报错:ER_NO_DEFAULT_FOR_FIELD: Field 'status' doesn't have a default value
  9. seo快速排名利器之高权重二级域名
  10. python3+pyqt5+opencv3简单使用