Find the second largest node in the BST

分析:

如果root有右节点,很明显第二大的node有可能在右子树里。唯一不满足的条件就是右子树只有一个node. 这个时候root就是第二大node. 所以我们需要把root(可能是第二大node)也传下去。

如果root没有右节点,我们只要找左子树的最大node就可以了。

 public class Solution {
public Node secondLargest(Node root) {
return helper(root, null);
} private Node helper(Node root, Node previous) {
if (root.right != null) {
return helper(root.right, root);
} if (root.left != null) {
return rightMost(root.left);
} return previous;
} private Node rightMost(Node node) {
while (node.right != null) {
node = node.right;
}
return node;
}

最新文章

  1. linux的sysctl基本配置
  2. Scalaz(46)- scalaz-stream 基础介绍
  3. MvvmLight ToolKit .Net4.5版本 CanExecute不能刷新界面bug
  4. usb设备驱动描述,王明学learn
  5. virtual box ubuntu卡在开机光标
  6. asp.net core StaticFiles中间件修改wwwroot
  7. jeewx的使用_01 接入和验证
  8. Java_io体系之PipedWriter、PipedReader简介、走进源码及示例——14
  9. [转]MySQL 5.6 全局事务 ID(GTID)实现原理(一)
  10. HDU1166 敌兵布阵(树状数组)
  11. mongodb- Java API 查询操作
  12. 【单例模式】java实现
  13. 解决mysql表不能查询修改删除等操作并出现卡死
  14. CodeBlocks无法调试的解决方法
  15. CDR锁定方式
  16. html基本进阶知识【转】
  17. java笔记 -- java变量与常量的声明
  18. SQL Server 数据类型映射(转载)
  19. Vue-嵌套路由
  20. 两个非常好的bootstrap模板,外送大话设计模式!

热门文章

  1. 自动上传本地图片和word图片(word图片需使用从word粘贴功能)
  2. Poj 2887 Big String(块状数组)
  3. HGOI 20191103am 题解
  4. Ubuntu16.04从源码部署安装禅道过程记录
  5. Java程序基本结构
  6. Java线程优先级及守护线程(二)
  7. 如何简单的在linux上安装jdk并配置环境变量
  8. C#_switch语句,for循环,do while循环,while循环
  9. 码支付(php版本)应用
  10. mybatis 批量将list数据插入到数据库