0

我已经实现了 BST,当我插入一些值时,我在 INSERT 函数中得到了错误。如果我将 main 函数中的 -32 替换为 32(参见 main),它工作正常,但现在出现错误。我找不到它。

#include <iostream>
#include <cstdlib>
using namespace std;

struct Node{
    int val;
    Node* l;
    Node* p;

    Node(int val){
        this->val = val;
        l = NULL;
        p = NULL;
    }
};

struct BST{
    Node* root;
    BST(int val){
        root = new Node(val);
    }
};

bool insert(Node* e, int val){
    if(e->val == val){
        return false;
    }
    else if(val < e->val){
        if(e->l == NULL){
            e->l = new Node(val);
            return true;
        } else
            return insert(e, val);
    } else if(val > e->val){
        if(e->p == NULL){
            e->p = new Node(val);
            return true;
        }else
            return insert(e->p, val);
    } return false;
}

bool insert(BST* d, int val){
    insert(d->root, val);
}

void infixDisplay(Node* w){
   if(w != NULL){
        infixDisplay(w->l);
        cout<<w->val<<endl;
        infixDisplay(w->p);
    }
}

void infixDisplay(BST* d){
    infixDisplay(d->root);
}

int main(){
    BST* d = new BST(4);
    insert(d,12);
    insert(d,-32); // REPLACE WITH +32 IT IS OK!
    insert(d,4);
    insert(d,89);
    insert(d,6);
    insert(d,3);
    infixDisplay(d);
    return 0;
}
4

1 回答 1

2

该行:

return insert(e, val);

应该

return insert(e->l, val);
于 2012-10-12T19:31:27.137 回答