0

これは機能していません、これはあなたたちに正しく見えますか?論理は正しいと思いますが、私は完全に間違っている可能性があります

誰かアイデアはありますか?

これは単なる挿入関数であり、intに対してのみ機能することになっています

void BST::Insert(int valueToInsert) {

    if (root == NULL) {
        root = new Node();
        root->val = valueToInsert;
        root->parent = NULL;
        root->left = NULL;
        root->right = NULL;

    } else {
        Node* tmp = new Node();
        tmp->val=valueToInsert;
        Node* trav = root;
        tmp->left=NULL;
        tmp->right=NULL;

        while (true) {   
            if((trav->val)>(trav->val)) {
                if (trav->right == NULL) {
                    trav->right = tmp;
                    tmp->parent = trav;
                    tmp->right = NULL;
                    tmp->left = NULL;                  
                    break;
                } else {
                    trav = trav->right;
                    continue;
            }
        }

        if ((tmp->val)<(trav->val)) {
            if (trav->left == NULL) {
                trav->left = tmp;        
                tmp->parent = trav;
                break;
            }else {
                trav = trav->left;
                continue;
            }
        }
    }        
}
4

2 に答える 2

1

以下は疑わしいようです。

           if((trav->val)>(trav->val)) {
               ^^^^        ^^^^

最初travは意図されていましたtmpか?

于 2012-12-10T08:37:48.990 に答える
0
while (true) {


                if((trav->val)>(trav->val)) {

while 条件のすぐ下で、trav->val が trav->val と比較されています。これは意図ではないと思います。

于 2012-12-10T08:39:50.210 に答える