オブジェクトを BST に挿入しようとしていますが、プログラムが一見無限ループに陥り、右側のノードに 50 回、左側のノードに 1 回オブジェクトを配置し、それを無限に繰り返します。
void insert(const T & x, BinaryNode* & t) const
{
if(t == NULL){
t = new BinaryNode(x, NULL, NULL);
//cout << "in the if" << endl;
}
else if(x.offense.compare(t->element.offense) < 0){
cout << "left" << endl;
insert(x, t->left);}
else if(x.offense.compare(t->element.offense) > 0){
cout << "right" << endl;
insert(x, t->right);}
else if(x.offense.compare(t->element.offense) == 0)
insert(x, t->right);
else
;//do nothing
}
「==」のケースをコメントアウトすると、その出力は正しいように見えますが、比較が似ている場合にはそれが必要になることがわかっています。