# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param root TreeNode类 # @param p int整型 # @param q int整型 # @return int整型 # class Solution: def lowestCommonAncestor1(self , root: TreeNode, p: int, q: int) -> int: # write code here """ 三种情况分类 :搜索二叉树不会有相同元素 时间复杂度:o(n) 空间复杂度: O(n) 栈的深度 """ # 保证p<q if p>q: temp=p p=q q=temp if root.val >=p and root.val<=q: return root.val # 找到 elif root.val>q and root.val>p: return self.lowestCommonAncestor(root.left,p,q) elif root.val<q and root.val <p: return self.lowestCommonAncestor(root.right,p,q) def lowestCommonAncestor(self , root: TreeNode, p: int, q: int) -> int: while True: if p >q: temp =p p=q q=temp if p<=root.val and root.val<=q: break elif p<root.val and q<root.val: root=root.left elif p>root.val and q>root.val: root=root.right return root.val