Leetcode: Lowest Common Ancestor of a Binary Search Tree
2015-08-23 09:57
399 查看
Get Idea from 西施豆腐渣 csdn .
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
/ \ / \
0 _4 7 9
/ \
3 5
For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
Question
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
[code] _______6______ / \ ___2__ ___8__
/ \ / \
0 _4 7 9
/ \
3 5
For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
Analysis
Should take advantage of property of BST.Solution
[code]# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def lowestCommonAncestor(self, root, p, q): """ :type root: TreeNode :type p: TreeNode :type q: TreeNode :rtype: TreeNode """ if root==None or p.val==None or q.val==None: return None if p.val>root.val and q.val>root.val: return self.lowestCommonAncestor(root.right, p, q) elif p.val<root.val and q.val<root.val: return self.lowestCommonAncestor(root.left, p, q) else: return root.val
相关文章推荐
- Summary for week6
- hdu 5418 状态压缩dp/tsp问题
- 前台参数使用Ajax请求时将参数带在URL后面需要两次encodeURI
- hdu 5417 Victor and Machine(模拟)
- Win + D 和 Win + M的区别
- 汉诺塔问题
- Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质
- 571B. Minimization(Codeforces Round #317)
- POJ 1988 Cube Stacking 并查集
- A1024. Palindromic Number (25)
- 《JavaScript DOM编程艺术》
- 洛谷1219 八皇后 解题报告
- C# 格式化字符串
- Andriod学习系列之(四)Intent初涉
- 【十一】运算符重载(下)
- C# 格式化字符串
- WordPress网站设置搜索引擎关键词和描述
- C语言基础知识之(二):分支
- 阿里淘宝知名工程师
- Effective C++ 条款15 在资源管理类中提供对资源的原始访问