题解 | #二叉搜索树的最近公共祖先#

二叉搜索树的最近公共祖先

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

class Solution:
    def lowestCommonAncestor(self , root: TreeNode, p: int, q: int) -> int:
        def path(root, k):           # 定义一个搜索路径记录函数,
            res = [root.val]         # 返回一个列表
            while k != root.val:
                if k > root.val:
                    root = root.right
                else:
                    root = root.left
                res.append(root.val)
            return res
        
        s1 = path(root, p)          # 分别求出p和q的路径
        s2 = path(root, q)
        f = None
        for a,b in zip(s1, s2):     # 将两个路径相同位置记录下来
            if a==b:                # 最后一个相同节点即为最近公共祖先
                f = a
            else:
                break
        return f

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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