leetcood学习笔记-235-二叉搜索树的最近公共祖先

 

题目描述:

利用二叉搜索树的特点,如果p、q的值都小于root,说明p q 肯定在root的左子树中;如果p q都大于root,说明肯定在root的右子树中,如果一个在左一个在右 则说明此时的root记为对应的最近公共祖先

方法一:递归

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        if max(p.val,q.val) < root.val:
            return self.lowestCommonAncestor(root.left,p,q)
        if min(p.val,q.val) > root.val:
            return self.lowestCommonAncestor(root.right,p,q)
        return root

方法二:迭代

class Solution:
    def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode', q: 'TreeNode') -> 'TreeNode':
        while root:
            if max(p.val,q.val) < root.val:
                root = root.left
            elif min(p.val,q.val) > root.val:
                root = root.right
            else:
                return root

 

posted @ 2019-03-29 18:15  oldby  阅读(165)  评论(0编辑  收藏  举报