From top to bottom, notice that 7
is between 4
and 8
, as the structure follows the normal properties of a BST
. We can express that idea with this conditional: if we encounter a node between node1
and node2
, it means that it is a common ancestor of node1
and node2
.

It also spawns these two ideas: if we encounter a node greater than both the nodes, we're going to find our lowest common ancestor on its left side.
Likewise, if we encounter a node smaller than both the nodes, we're going to find our lowest common ancestor on its right side.

Why is that? Let's see the tree expanded a bit.
xxxxxxxxxx
/*
7
/ \
4 8
/ \
1 5
*/
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment