var isValidBST = function (root) {
  const isValid = (root, lower, upper) => {
    if (root === null) return true;
    if (root.val <= lower || root.val >= upper) return false;
    return (
      isValid(root.left, lower, root.val) &&
      isValid(root.right, root.val, upper)
    );
  };

  return isValid(root, -Infinity, Infinity);
};