二进制树段在c中失败

时间:2016-02-26 22:27:27

标签: c binary-search-tree

大家好我在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);

1 个答案:

答案 0 :(得分:1)

在您的搜索功能中:

def nested_get(d, *keys):
    for key in keys:
        if d is None:
            break
        d = d.get(key)
    return d

当前指向NULL,访问NULL位置的内存会导致分段错误。