int largetSmallerBSTKeys(Node* root, int x) {
if (root == NULL) {
return -1;
}
int smallestEncountered = root -> value;
while (root -> value != x) {
if (x < root -> value) {
root = root -> left;
} else if (x > root -> value) {
root = root -> right;
}
if (root -> value < x && root -> value > smallestEncountered) {
smallestEncountered = root -> value;
}
}
// if x's node has a left subtree
if (root -> left != NULL) {
root = root -> left;
while (root -> right != NULL) {
root = root -> right;
}
smallestEncountered = root -> value;
}
return smallestEncountered;
}