code: def _is_bst(root, min_value=float('-inf'), max_value=float('inf')):
      
      if root is None:
          return True
      return (
          min_value < root.value < max_value and
          _is_bst(root.left, min_value, root.value) and
          _is_bst(root.right, root.value, max_value)
      )
docs: Check if the binary tree is a BST (binary search tree).
  
      :param root: Root node of the binary tree.
      :type root: binarytree.Node | None
      :param min_value: Minimum node value seen.
      :type min_value: int | float
      :param max_value: Maximum node value seen.
      :type max_value: int | float
      :return: True if the binary tree is a BST, False otherwise.
      :rtype: bool