LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
2015-07-11 14:25
477 查看
题意:
给一棵二叉排序树,找p和q的LCA。
思路:
给的是BST(无相同节点),那么每个节点肯定大于左子树中的最大,小于右子树种的最小。根据这个特性,找LCA就简单多了。
分三种情况:
(1)p和q都在root左边,那么往root左子树递归。
(2)在右同理。
(3)一左一右的,那么root->val肯定大于其中的1个,小于另一个。
AC代码
给一棵二叉排序树,找p和q的LCA。
思路:
给的是BST(无相同节点),那么每个节点肯定大于左子树中的最大,小于右子树种的最小。根据这个特性,找LCA就简单多了。
分三种情况:
(1)p和q都在root左边,那么往root左子树递归。
(2)在右同理。
(3)一左一右的,那么root->val肯定大于其中的1个,小于另一个。
class Solution(object): def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """ if (p.val-root.val)*(q.val-root.val)<=0: #一左一右 return root elif p.val<root.val: #左 return self.lowestCommonAncestor(root.left, p, q) else: return self.lowestCommonAncestor(root.right, p, q)
AC代码
相关文章推荐
- 分享非常有用的Java程序(关键代码)(七)---抓屏程序
- UI1_ViewController视图切换及Appdelegate
- Linux RedHat git install---github客户端配置
- UI_UITableView编辑
- Lowest Common Ancestor of a Binary Search Tree
- poj 3237 Tree(树链拆分)
- iOS Loading图多张png图片组合动画效果
- 大写字母的平行四边形
- Day15 Java基础 IO流
- tmux 常用操作
- HBase写请求分析
- Sql使用视图(简单的视图)适合入门-level
- Xcode插件管理
- unix 时间
- RC5分组密码算法
- Win10样式管理与夜间模式
- 【rest】 深入理解rest
- Nginx - Windows下Nginx初入门
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 小贝_mysql 常见存储引擎区别