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

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        # 看了评论区,二叉树和二叉搜索树是有一点不同,
        # 二叉搜索树满足,左节点的值小于右节点的值, 左子树小于右子树.

        # 这种递归的写法是很简洁,但是不太好理解。
        # 比如在递归的过程中,传入的 root 这个节点,是一直变动的。
        # 所以最终返回的这个 root 仅指的是一个变量名,而不是最初传入的值。
        if p.val < root.val and q.val < root.val:
            return self.lowestCommonAncestor(root.left, p, q)
        
        if p.val > root.val and q.val > root.val:
            return self.lowestCommonAncestor(root.right, p, q)

        return root 

你可能感兴趣的:(leetcode 235. 二叉搜索树的最近公共祖先)