力扣刷题(python)50天——第四十五天:二叉树的最近公共祖先

力扣刷题(python)50天——第四十五天:二叉树的最近公共祖先

题目描述

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法

本题即上题的延申。
参考:

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/solution/

注意明确判断当前节点为目标节点的判断条件!!!!!

解答

# 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
        """
        def recr(root,p,q):
            if not root:
                return False
            right=recr(root.right, p, q)
            left=recr(root.left, p, q)
            if root==p or root==q:
                par=True
            else:
                par=False
            if par+right+left>=2:
                self.ans=root
            return par or left or right
        recr(root,p,q)
        return self.ans

执行结果

力扣刷题(python)50天——第四十五天:二叉树的最近公共祖先_第1张图片

提升:

这一题对答案的借鉴有点过多,二刷应好好看看。

你可能感兴趣的:(leetcode刷题,python,力扣,leetcode,二叉树的最近公共祖先,递归)