A prevalent technique for addressing this issue is to perform an In-Order Traversal of the tree. This strategy presupposes that the tree in question does not permit duplicate values. Here’s an illustration of how you might convey the solution: def isBST ( node , minVal = float ( '-inf' ) , maxVal = float ( 'inf' ) ) : if not node : return True if not minVal < node . val < maxVal : return False return isBST ( node . left , minVal , node . val ) and isBST ( node . right , node . val , maxVal ) In the isBST() function, we initiate our checks from the root node, setting minVal and maxVal to negative and positive infinity, respectively. For the left subtree, the maximum permitted value is less than that of the root, while for the right subtree, the minimum permissible value exceeds that of the root.