A method to address this issue involves a variation of Binary Search: Begin at the root and set the result to -1. If the key of the root is greater than or equal to the target number 'num', proceed to the left child of the root node. If the root key is less than 'num': Update the result with the key of the root. Then, move to the right child of the root node. Stop and return the result when you encounter a null node. Here’s an example in Python: class Node : def __init__ ( self , key ) : self . key = key self . left = None self . right = None def findLargestSmallerKey ( root , num ) : result = - 1 while ( root != None ) : if ( root . key < num ) : result = root . key root = root . right else : root = root . left return result In this example, the findLargestSmallerKey function identifies the largest key that is smaller than the specified number 'num' using a while loop. When root.key is less than num, it indicates that a smaller key has been found, so it is updated as the result, and the search continues to the right for a potentially larger key that is still less than num. If root.key is greater than or equal to num, the search shifts to the left to locate a smaller key.