0

オブジェクトを 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
        }

「==」のケースをコメントアウトすると、その出力は正しいように見えますが、比較が似ている場合にはそれが必要になることがわかっています。

4

0 に答える 0