だから私は、この再帰関数を使用して二分木に値を挿入しようとしています:
void add(node* *hd, int v){
node* curr = *hd;
if(curr == NULL){
    curr = (node*)malloc(sizeof(node));
    curr->value = v;
}else{
    if(v < curr->value){
        add(&curr->left, v);
    }else{
        add(&curr->right, v);
    }
}
}
機能していないようで、なぜこのようなことができないのか理解できません。どうすれば修正できますか?