大家好我在c中实现二叉搜索树。看起来对树的插入很好。但是在搜索时,它会导致分段失败。请查看我的代码并说明此问题的原因以及如何克服它。在此先感谢。
以下是代码......
struct node{
int data;
struct node *leftChild;
struct node *rightChild;
};
struct node *root=NULL;
void insert(int data){
struct node *current=NULL;
if(root==NULL){
root=(struct node*)malloc(sizeof(struct node));
root->data=data;
printf("Root data:%d\n",root->data);
}else{
current=root;
//Searching the posistion
while(true){
if((current->data)<data){
current=current->rightChild;
}else{
current=current->leftChild;
}
if(current==NULL){
break;
}
}
struct node *tempData;
tempData=(struct node*)malloc(sizeof(struct node));
tempData->data=data;
tempData->leftChild=NULL;
tempData->rightChild=NULL;
current=tempData;
printf("Current data:%d\n",current->data);
}
}
struct node* search(int data){
sstruct node *current=root;
if(current==NULL){
return;
}else{
while(current->data!=data){
printf("%d",current->data);
if((current->data)<data){
current=current->rightChild;
}else{
current=current->leftChild;
}
//printf("Hello world!:%d\n",current->data);
if(current==NULL){
printf("%d",current->data);
return NULL;
}
}
return current;
}
}
我的main()方法是......
insert(10);
insert(20);
insert(4);
insert(16);
search(20);
答案 0 :(得分:1)
在您的搜索功能中:
def nested_get(d, *keys):
for key in keys:
if d is None:
break
d = d.get(key)
return d
当前指向NULL,访问NULL位置的内存会导致分段错误。