Case 1: General Case – Nodes on Different Sides
In a BST, if one node lies in the left subtree and the other in the right, then the current node is the lowest common ancestor. For example, in the tree [6,2,8,0,4,7,9,null,null,3,5]
, if we look for LCA of 2 and 8, they lie on different sides of 6. So, 6 is the lowest node that connects both branches — the LCA.
Case 2: One Node is Ancestor of the Other
Sometimes, one of the given nodes is actually the ancestor of the other. In BST terms, if both p
and q
are on the same side and one is directly in the path of the other, then the upper node is the LCA. For instance, in the same tree, the LCA of nodes 2 and 4 is 2 — since 4 is a descendant of 2 and BST traversal leads us to 2 before 4.
Case 3: Both Nodes Are the Same
In this special case, when p == q
, the lowest common ancestor is the node itself. The BST structure doesn’t matter in this case — if you are asked for the LCA of a node with itself, the answer is trivially that node.
Case 4: Tree is Empty
If the root of the BST is null
, the tree doesn’t contain any nodes. No matter what values p
and q
are, the answer will be null
because there's no structure to even begin a search. This case should be handled upfront to avoid null pointer issues during traversal.