我试图将一个对象插入 BST,但我的程序陷入了一个看似无限的循环,它将对象放置在右侧节点 50 次和左侧一次,并且它无限重复。
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
}
当我注释掉 '==' 的情况时,它的输出似乎是正确的,但我知道对于比较相似的情况,它必须有它。