Given the root of a binary tree, determine whether it is a valid binary search tree (BST).
A BST requires that for every node, all values in its left subtree are strictly less than the node's value, all values in its right subtree are strictly greater, and both subtrees are themselves valid BSTs.
Return true if the tree is a valid BST, false otherwise. The tree is given in level-order (TreeNode with { val, left, right }, null for a missing child).
[2,1,3][5,1,4,null,null,3,6][5,4,6,null,null,3,7][1][2,2,2][10,5,15,3,7,12,20][3,1,5,0,2,4,6]