Given the root of a binary tree, return true if it is a valid binary search tree: every node's left subtree holds only smaller values, its right subtree only larger values, and both subtrees are themselves valid BSTs.