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