版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
力扣刷题(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
执行结果
提升:
这一题对答案的借鉴有点过多,二刷应好好看看。