Given the root of a binary tree, return True if it is a valid Binary Search Tree (BST), otherwise return False.
A valid BST requires that every node in the left subtree is strictly less than the current node, every node in the right subtree is strictly greater than the current node, and both subtrees must also be valid BSTs.
def is_valid_bst(root=None, val=None, left=None, right=None):