235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode)
思路:
递归出口:当root为空时,返回空。
单层递归逻辑:
- 当root的值大于p和q时,递归遍历root的左子树,如果返回值left不为空,说明找到最近公共祖先left;
- 当root的值小于q和p时,递归遍历root的右子树,如果返回值right不为空,说明找到最近公共祖先right;
- 如果root的值在p和q之间,那么root就是最近公共祖先,返回root。
class Solution(object):
def lowestCommonAncestor(self, root, p, q):
if root==None:
return None
if root.val>p.val and root.val>q.val:
left=self.lowestCommonAncestor(root.left,p,q)
if left!=None:
return left
if root.val<p.val and root.val<q.val:
right=self.lowestCommonAncestor(root.right,q,p)
if right!=None:
return right
return root