v1
这个思路比较简单,主要利用二叉搜索树的性质。当p,q被当前结点分隔在不同侧,或者当前结点等于其中某一个值的时候,则该节点就是他们公共的祖先。若他们在同一侧,就是同大于或者同小于当前结点,则需要继续遍历。
class Solution:
def lowestCommonAncestor(self , root: TreeNode, p: int, q: int) -> int:
# write code here
def dfs(root,p,q):
if not root:
return
if p<root.val and q<root.val:
return dfs(root.left, p, q)
if p>root.val and q>root.val:
return dfs(root.right, p, q)
return root.val
return dfs(root, p, q)