LeetCode235. Lowest Common Ancestor of a Binary Search Tree
2016-04-13 15:23
295 查看
思路:应该充分利用BST的特性: 左边节点 < root <右边节点 这个特性。
因此p和q的最开始分布就只存在三种可能。要么在root的两边,要么要root的左边或右边。
因此p和q的最开始分布就只存在三种可能。要么在root的两边,要么要root的左边或右边。
当p和q在root的两边时,不用多算,LCA就是root。
当p和q在root的左边时,就看root.left与p和q的大小关系。右边亦是如此。
还有一种特殊情况,就是 p 是 q 的parent的时候,p是q的LCA。此时三种if语句中的条件不符合,所以直接返回当前的root,也就是ppublic class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { TreeNode lca = root; if(lca.val > p.val && lca.val < q.val){ return lca; } else if(lca.val > p.val && lca.val > q.val){ return lowestCommonAncestor(lca.left,p,q); } else if(lca.val < p.val && lca.val < q.val){ return lowestCommonAncestor(lca.right,p,q); } return root; } }
相关文章推荐
- nginx+tomcat7+memcached服务架构实现session共享
- 汇编cmp比较指令详解
- JSON 解析库的使用 :Gson 和 fast-json比较
- NPOI导出Excel文件,对单元格的一些设置
- Android离线安装
- hihiCoder1290 Demo Day
- Activity(活动)的启动模式详解
- EventBus3.0 快速开始(Android Studio)
- iOS学习笔记23-音效与音乐
- 为什么男女关系混乱会导致糖尿病?|彭博士谈伤精与养精
- 后台获取前台表单数据
- SQL联合查询(内联、左联、右联、全联)的语法
- 使用Volley执行网络数据传输
- mysql逗逼的.frm文件恢复数据库
- python hex
- ZOJ-3443-Bessel Function II
- new的越界访问
- Java多线程(2) 同步
- java 多线程编程之join()的用法
- Powershell查看AD用户组的成员数量