¿Por qué usamos la declaración "& (*" cuando el puntero doble para estructurar es un argumento de una función?

void instert(NODE**root, int value)
{
    ...
    insert(&(*root)->left,value);
    ...
}

void search(NODE*root, int value)
{
    ...
    search(root->left, value);
    ...
}

Por qué usamos "&" aquí: insert (& (* root) -> left, value); Pero no usamos "&" aquí: search (root-> left, value);

Respuestas a la pregunta(3)

Su respuesta a la pregunta