递归思想,在左子树和右子树中分别寻找,如果分别能找到那么祖先是两个字树的根节点。如果只能找到一个,那就是这个子树的根结点。递归调用
class Solution:
def lowestCommonAncestor(self, root, p, q):
"""
:type root: TreeNode
:type p: TreeNode
:type q: TreeNode
:rtype: TreeNode
"""
if not root: return None
if p==root or q==root: return root
L=self.lowestCommonAncestor(root.left,p,q)
R=self.lowestCommonAncestor(root.right,p,q)
if L and R: return root
return L if L else R