细分错误:C ++代码BST

时间:2018-08-15 08:37:12

标签: c++ command g++ binary-search-tree

# 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

1 个答案:

答案 0 :(得分:0)

假设您具有比例node *x,*y,*root,*parent;(如您在其他答案的注释中所述),则变量root是未初始化的。因此,任何使用它的尝试都是未定义的行为,因此您的程序可能会崩溃(也可能不会崩溃)。您所看到的(有时程序可以正常工作,有时不起作用)是未初始化变量的非常典型的现象。试试这个

node* root = NULL;