题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

python3,递归。
所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近(更高的)公共祖先,只能在某一边子树中找到两个点。
class Solution:
    # 所谓最近公共祖先,就是刚好分左右子树可以找到两个点。非最近公共祖先,只能在某一边子树中找到两个点。
    def lowestCommonAncestor(self , root: TreeNode, o1: int, o2: int) -> int:
        # 该子树没找到,返回-1
        if not root: 
            return -1
        # 找到了,赋值
        if root.val == o1 or root.val == o2: 
            return root.val
        # 左子树寻找
        left = self.lowestCommonAncestor(root.left, o1, o2) 
        # 右子树寻找
        right = self.lowestCommonAncestor(root.right, o1, o2) 
        
        if left == -1: 
            return right
        
        if right == -1: 
            return left
        # 正好左右都找到了,就是当前节点
        return root.val 

全部评论

相关推荐

牛客46693249...:刷kpi的,海康这个岗位已经有实习生转正了
如何判断面试是否凉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务