# include <iostream>
using namespace std;
struct node{
int data;
node *l,*r,*p;
};
int main(){
int i,n;
cout<<"Enter the number of nodes\n";
cin>>n;
i=1;
while(i<=n){
y=root;
x = (node *)malloc(sizeof(node));
cin>>x->data;
while(y!=NULL){
if(x->data < y->data){
parent = y;
y = y->l;
}
else{
parent = y;
y = y->r;
}
}
if(root==NULL){
root=x;
}
else if(parent->data < x->data){
parent->r = x;
x->p = parent;
}
else{
parent->l = x;
x->p = parent;
}
i++;
}
return 0;
}
它使用g ++命令通过命令窗口在iMac上给出了分段错误,但在其他IDE(在线和离线IDE)上都可以正常工作,我什至在我的恶魔个人计算机上尝试了该代码,他拥有DEV c ++,并且效果很好,我也尝试了在线IDE(网站:-codechef等,效果很好)。enter image description here
答案 0 :(得分:0)
假设您具有比例node *x,*y,*root,*parent;
(如您在其他答案的注释中所述),则变量root
是未初始化的。因此,任何使用它的尝试都是未定义的行为,因此您的程序可能会崩溃(也可能不会崩溃)。您所看到的(有时程序可以正常工作,有时不起作用)是未初始化变量的非常典型的现象。试试这个
node* root = NULL;