deserialize BST binary search tree
void deserializeBST(TreeNode *&r, int min, int max, int &insertval, ifstream &fin) { // gist, *&r
if(insertval <= min || insertval >= max) return;
int val = insertval; // gist, leave a copy of insertval into val, since we'll use insertval to accept new inputs
r = new TreeNode(val);
if(fin >> insertval) {
deserializeBST(r->left, min, val, insertval, fin);
deserializeBST(r->right, val, max, insertval, fin);
}
}