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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44568780/article/details/100785298

力扣刷题(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

执行结果

在这里插入图片描述

提升:

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

猜你喜欢

转载自blog.csdn.net/weixin_44568780/article/details/100785298