【leetcode】二叉树最近公共祖先

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36372879/article/details/88243536

在这里插入图片描述


算法思路

按照从下面到下面遍历的方法
如果遍历到p或者q,说明一个在另外一个下面,如实例2:那么直接返回p或者q
然后往左边和右边遍历
如果左边和右边都不为空,说明一个在左边一个在右边,那么返回root
如果其中一个为空,那么返回另外一边。


代码

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if root == None:
            return None
        if root == p or root == q:
            return root
        left = self.lowestCommonAncestor(root.left, p, q)
        right = self.lowestCommonAncestor(root.right, p, q)
        if left != None and right != None:
            return root
        if left == None:
            return right
        if right == None:
            return left

猜你喜欢

转载自blog.csdn.net/weixin_36372879/article/details/88243536