void add(int value) {
   if (root) {
     root->add(value);
   } else {
     root = new BSTNode(value);
   }
 }
 void add(int newValue) {
   subtreeSize++;
   if (newValue <= value) {
     if (left) {
       left->add(newValue);
     } else {
       left = new BSTNode(newValue);
     }
   } else {
     if (right) {
       right->add(newValue);
     } else {
       right = new BSTNode(newValue);
     }
   }
 }