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;
}

results matching ""

    No results matching ""