Por que usamos a instrução “& (*” quando ponteiro duplo para struct é um argumento de uma função?

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

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

Por que usamos "&" aqui: insert (& (* root) -> left, value); Mas não usamos "&" aqui: search (root-> left, value);

questionAnswers(3)

yourAnswerToTheQuestion