我已经实现了BST,当我插入一些值时,我在INSERT函数中得到了错误。如果我将主函数中的-32替换为32( 参见主 ),它可以正常工作,但现在有错误。我找不到了。
#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;
}
答案 0 :(得分:2)
该行:
return insert(e, val);
应该是
return insert(e->l, val);