2016-09-19 50 views

回答

2

不,你不需要使用twalk,您可以使用tdelete與比較功能(用於插入相同的功能) ,tdelete更改根節點,因此傳遞和刪除while (root != NULL)將執行此操作,例如:

typedef struct { 
    int key; 
    char value[50]; 
} t_data; 

static int comp(const void *pa, const void *pb) 
{ 
    const t_data *a = pa, *b = pb; 

    if (a->key > b->key) return +1; 
    if (a->key < b->key) return -1; 
    return 0; 
} 

int main(void) 
{ 
    void *root = NULL; 
    t_data *data;  

    ... 

    while (root != NULL) { 
     data = *(t_data **)root; 
     tdelete(data, &root, comp); 
     free(data); 
    } 

    ...