二进制搜索插入 c++ 中的分段错误
Segmentation Fault in binary search insertion c++
在二叉搜索树中插入值时出现段错误。
这是 hackerrank 问题所以只需要写这个方法
这是我写的
typedef struct node
{
int data;
node * left;
node * right;
}node;
node * insert(node * root, int value)
{
node* temp = root;
node* temp1 = new node();
node* prev = NULL ;
while(temp != NULL){
prev= temp;
if(value >= temp->data)
temp = temp->right;
else
temp = temp->left;
}
temp1->data = value;
temp1->left = NULL;
temp1->right = NULL;
if(prev->data >= value)
prev->left = temp1;
else
prev->right = temp1;
return root;
}
我不明白为什么这段代码给我分段错误。
欢迎所有建议..
您没有检查 root == NULL
。
当使用递归可以使代码变得更简单时,没有必要使代码变得复杂。
node * insert(node * root, int value)
{
if(root==NULL)
{
root=new node;
root->data=value;
root->left=NULL;
root->right=NULL;
return root;
}
else if(root->data>value)
{
root->left=insert(root->left,value);
return root;
}
else
{
root->right=insert(root->right,value);
return root;
}
}
在二叉搜索树中插入值时出现段错误。 这是 hackerrank 问题所以只需要写这个方法 这是我写的
typedef struct node
{
int data;
node * left;
node * right;
}node;
node * insert(node * root, int value)
{
node* temp = root;
node* temp1 = new node();
node* prev = NULL ;
while(temp != NULL){
prev= temp;
if(value >= temp->data)
temp = temp->right;
else
temp = temp->left;
}
temp1->data = value;
temp1->left = NULL;
temp1->right = NULL;
if(prev->data >= value)
prev->left = temp1;
else
prev->right = temp1;
return root;
}
我不明白为什么这段代码给我分段错误。
欢迎所有建议..
您没有检查 root == NULL
。
当使用递归可以使代码变得更简单时,没有必要使代码变得复杂。
node * insert(node * root, int value)
{
if(root==NULL)
{
root=new node;
root->data=value;
root->left=NULL;
root->right=NULL;
return root;
}
else if(root->data>value)
{
root->left=insert(root->left,value);
return root;
}
else
{
root->right=insert(root->right,value);
return root;
}
}