红黑树 - 初始化

时间:2014-04-08 01:12:37

标签: c algorithm data-structures red-black-tree

如何正确初始化C中的红黑树?

结构:

typedef struct Node{
    int key;
    struct Node *left;
    struct Node *right;
    struct Node *parent;

    enum {RED, BLACK} color;
}node;

typedef struct RBtree{
    struct Node *root;
    struct Node *nil;
}rbtree;

主要功能:

int main(){
    rbtree *tree;
    init_rbtree(&tree);
}

初始化功能:

void init_rbtree(rbtree **t){
    (*t)->root = NULL;

    node *n = (node*)malloc(sizeof(node));
    if(n != NULL){
        n->color = BLACK;
        (*t)->nil = n;
    }
}

运行此代码后程序崩溃。

1 个答案:

答案 0 :(得分:1)

您需要先为*t分配内存,然后才能使用它。

void init_rbtree(rbtree **t) {
    *t=malloc(sizeof(rbtree));

    if (*t==NULL) {
        //handle error
    }  
    else {
        (*t)->root = NULL;

        node *n = malloc(sizeof(node));
        if(n != NULL){
            n->color = BLACK;
            (*t)->nil = n;
        }
    }
}