题解 | #二叉搜索树的最近公共祖先#
二叉搜索树的最近公共祖先
https://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f
# 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 __init__(self) -> None: self.minc = 0 self.minanc = 0 def findp(self,root,p): if root is None: return False else: if root.val==p: return True else: leftg = self.findp(root.left,p) rightg = self.findp(root.right,p) return leftg or rightg def dps(self, root, p,q, depth): if root is None: return 0 else: getp = self.findp(root,p) getq = self.findp(root,q) if getp and getq: if depth>self.minc: self.minc = depth self.minanc = root.val leftg = self.dps(root.left,p,q,depth+1) rightg = self.dps(root.right,p,q,depth+1) return 0 def lowestCommonAncestor(self , root: TreeNode, p: int, q: int) -> int: # write code here self.dps(root,p,q,1) return self.minanc