В вашей функции добавления узла
if(subtree->getEntry() > entry.getID()){
if(subtree->getRight()!=nullptr){
add(entry,subtree->getRight());
}
else{
BSNode<ItemType>* n= new BSNode<ItemType>(entry);
subtree->setRight(n);
}
}
else if(subtree->getEntry() < entry.getID()){
if(subtree->getLeft()!=nullptr){
add(entry, subtree->getLeft());
}
else{
BSNode<ItemType>* n= new BSNode<ItemType>(entry);
subtree->setLeft(n);
}
}
Ход go вправо , когда ID для добавления меньше, чем ID текущего узла.
С другой стороны стороны, в вашей функции поиска узлов
if(subtree->getEntry() > key){
return(search(key, subtree->getLeft()));
}
else{
return(search(key, subtree->getRight()));
}
Переход go влево , когда идентификатор для поиска меньше идентификатора текущего узла.
Это несоответствие предотвращает Идентификаторы узлов, отличных от root (1-й в списке), не найдены.
Вы должны инвертировать любой вариант, чтобы решить эту проблему.