LeetCode 236. 二叉树的最近公共祖先-Py-递归、明确函数作用和返回情况分类
原题链接
简单
作者:
shiqumi
,
2020-02-19 20:02:55
,
所有人可见
,
阅读 565
明确lowestCA函数的作用:
1、如果以root为根的子树中包含p和q,则返回它们的最近公共祖先
2、若只包含p或q,则返回p或q
3、若都不包含,则返回None
返回情况分类
若左边返回为空:
1、右边也不包含,则right=None,最终返回None
2、右边只包含p或q,则right=p或q,最终返回p或q
3、右边同时包含p或q,则right是最近公共祖先,最终返回最近公共祖先
若左右两边都不为空:
则肯定左右两边各一个,所以返回当前节点就可以了
class Solution:
def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
if not root or root == p or root == q:
return root
left = self.lowestCommonAncestor(root.left, p, q)
right = self.lowestCommonAncestor(root.right, p, q)
if not left: return right
if not right: return left
return root