All smaller keys are on the left
Because every left child is smaller than its parent, the smallest key in any non-empty BST is always found by following left links as far as you can go. You never need to look right.
It is like finding the first word in a dictionary: just go to the very first page, and don't bother with the rest.
Going left: always leads toward smaller values.
Where to stop: at the first node that has no left child.
Where's the smallest value?
Everything smaller than 8 lives on its left. So go left.
Move 1 of 3
Iterative vs recursive
You can write this with a simple loop: start at the root, and while the current node has a left child, step onto it. It uses almost no extra memory and only visits the nodes along the left edge of the tree.
An empty tree has no smallest value, so return minus one.
Constant memory: a simple pointer loop uses no call stack.
Empty tree: if the root is empty, answer minus one.
if not root:
return -1
curr = root
while curr.left:
curr = curr.left
return curr.val