Gente, estou tendo dificuldades com o uso de ponteiros na função de inserir, poderiam me ajudar:
void Inserir (arvore_ptr *pai, int c, char n[], float p) {
if (*pai) {
if (c < (*pai) -> cod) {
((*pai)->esq) = inserir(&((*pai)->esq), c, n, p);
if (altura (*pai->esq) - altura (*pai->dir) == 2)
if (c<*pai->esq->cod)
(*pai) = RotacaoSimplesEsquerda (*pai);
else
(*pai) = RotacaoDuplaEsquerda (*pai);
else
if(c > (*pai) -> cod) {
(*pai)->dir = inserir(c, *pai->dir);
if(altura(*pai->dir) - altura(*pai->esq) == 2)
if(c > (*pai)->dir->cod)
(*pai) = RotacaoSimplesDireira(*pai);
else
(*pai) = RotacaoDuplaDireita(*pai);
}
(*pai)->altura = Max(altura(*pai->esq), altura(*pai->dir)) + 1;
return (*pai);
}
else
{
if (*pai == NULL)
{
(*pai) = (arvore_ptr) malloc (sizeof (struct ARVORE));
(*pai) -> cod = c;
strcpy((*pai) -> nome, n);
(*pai) -> preco = p;
(*pai) -> altura = 0;
(*pai) -> esq = NULL;
(*pai) -> dir = NULL;
}
}
}