二叉搜索树的最近公共祖先

二叉搜索树又称二叉排序树,利用其特性解决问题更简单。

递归

值分布在节点左右时,那么公共祖先自然是当前节点。

function lowestCommonAncestor(root: TreeNode | null, p: TreeNode | null, q: TreeNode | null): TreeNode | null {
  if (root === null || p === null || q === null) return root
  if (root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q)
  if (root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q)

  return root
}